[2008-12-12] curlyBrackets escapuje jinak HTML a jinak JavaScript

David Grudl
founder | 8310
+
0
-

Ačkoliv tahle záležitost tu už byla zmíněna, myslím, že si zaslouží vlastní vlákno, aby vám ušetřilo možné komplikace.

Novinkou filtru curlyBrackets je přizpůsobení escapování podle lokálního typu obsahu. Uvnitř JavaScriptu nebo uvnitř CSS se escapuje jinak, než v HTML kódu. Díky tomu je možné zcela nativně používat PHP proměnné uvnitř JavaScriptového kódu.

// $items = array(1, 2, 3);
// $name = "Jim Beam";
<script>
var name = {$name};

var items = {$items};

for (var i in items)
{
    alert(items[i]);
}
</script>

Ale pozor! Nesmí se už používat extra uvozovky:

// $name = "Jim Beam";
<script>
var name = "{$name}";  // CHYBA, vygeneruje name = ""Jim Beam"";
</script>

Nyní je tedy možné udělat něco takového ($id je nějaký identifikátor obsahující libovolné znaky):

<style>
#{$id} { background: blue; }
</style>

<p id="{$id}">Hello!</p>

<script>
document.getElementById({$id}).style.backgroundColor = 'red';
</script>
PetrP
Člen | 587
+
0
-

Nešlo by zprovoznit i inline zápis? Popřípadě jak jednoduše v šablonách escapovat znaky v inline zápisu?

<div style="{$test}" onclick="{$test}">
David Grudl
founder | 8310
+
0
-

PetrP napsal(a):

Nešlo by zprovoznit i inline zápis? Popřípadě jak jednoduše v šablonách escapovat znaky v inline zápisu?

<div style="{$test}" onclick="{$test}">

Tohle by mělo fungovat normálně, zde by se mělo totiž používat HTML escapování.

RSS tématu Téma zavřeno