CurlyBracketsFilter v JS a escapeJs()
- Ondrej
- Člen | 110
nicmene to neresi problem
<script>
msg = document.getElementById('message').value;
nette.action('{link addComment}&{!$control->name}-text='+encodeURIComponent(msg))
</script>
odesilam prispevek do diskuze ajaxem, takze parametr do vygenerovane URL pridavam javascriptem. Vystup {link addComment} je v uvozovkach :(
Vyresil jsem to {!$control->link(‚addComment‘)},
ale presto jsem proti automatickemu escapovani, protoze me to moc uzitecne
nepripada.
Editoval Ondrej (14. 2. 2009 19:38)
- Jan Tvrdík
- Nette guru | 2595
<script>
var msg = document.getElementById('message').value;
nette.action({link addComment} + '&' + {$control->name} + '-text=' + encodeURIComponent(msg));
</script>
- kravčo
- Člen | 721
Jan Tvrdík napsal(a):
<script> var msg = document.getElementById('message').value; nette.action({link addComment} + '&' + {$control->name} + '-text=' + encodeURIComponent(msg)); </script>
Inými slovami: nevkladaj nazvy komponentov alebo linky do javascriptových stringov priamo, ale použi štandardné escapované vypísanie a výsledky potom zreťaz dohromady.
- PetrP
- Člen | 587
kravco napsal(a):
Inými slovami: nevkladaj nazvy komponentov alebo linky do javascriptových stringov priamo, ale použi štandardné escapované vypísanie a výsledky potom zreťaz dohromady.
Ještě jinými slovy: pracuj s tím jako by to byli javascriptové proměně. ;]
Mnohem větší problém vidím v náhodném volání CurlyBracket např v jQuery:
if (true) {$('#control_name_add').hide();}
// a další podobné
- David Grudl
- Nette Core | 8228
Vykřičník – tedy neescapovat – rozhodně nedoporučuji. Správné řešení uvádí Jan Tvrdík a Kravco.
PetrP napsal(a):
Mnohem větší problém vidím v náhodném volání CurlyBracket např v jQuery:
Holt je na to potřeba dávat bacha a za znak {
vkládat mezeru
nebo zalomení řádku.
- David Grudl
- Nette Core | 8228
PetrP napsal(a):
David Grudl napsal(a):
Holt je na to potřeba dávat bacha a za znak
{
vkládat mezeru nebo zalomení řádku.A nešlo by to nějak řešit? Existuje situace kdy v CurlyBrackets potřebuju zapsat toto?:
{$.neco} {$(neco)}
Tedy jako druhý znak po
$
tečka nebo závorka.
Tohle třeba konkrétně ne, ale co třeba {if
apod. Prostě je
lepší tu mezeru tam vždycky psát.
- PetrP
- Člen | 587
Jod napsal(a):
A v php by si to zapísal akože ako? =D
No tak CurlyBracket používaj regulární výrazy, takže jejich jednoduchou
úpravou by toho dosáhnout normálně dalo. Ale David má pravdu (samozřejmé
jako vždy ;]) a konstrukce jako {if
by odchytat nešly a tedy bude
lepší to nedělat nikde ;]