Escapování proměnné v JavaScriptu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ages
- Člen | 128
Tady je kompetní kód:
{var $flashData}
{foreach $flashes as $flash}
{var $flashData = $flashData.'<span class="'.$flash->type.'">'.$flash->message.'</span>'}
{/foreach}
<script>
r(function(){
var snackbarContainer = document.querySelector('.mdl-js-snackbar');
var data = {
message: {$flashData} , <!-- {$flashData|noescape} → nevypíše nic -->
timeout: 6000 };
snackbarContainer.MaterialSnackbar.showSnackbar(data);
});
function r(f){ /in/.test(document.readyState)?setTimeout('r('+f+')',9):f()}
</script>
Editoval Ages (10. 8. 2016 17:39)
- Ages
- Člen | 128
@CZechBoY
Protože v současné době to vypíše např:
<span class="success">Tag: <strong>O společnosti</strong> byl upraven.</span>
místo: Tag: O společnosti byl upraven.
@GEpic
Ano, je to tak "snackbary ":https://getmdl.io/…s/index.html#… se vypisují přes
sebe, což mi nevyhovuje, tak je chci zobrazit v jednom.
Ještě pokud použiji:
document.write({$flashData});
tak vše proběhne v pořádku a nic není potřeba escapovat.
Editoval Ages (10. 8. 2016 21:06)