onMouseOver nefunkčí v latte souboru
- Jarek92
- Člen | 91
Hezký den,
chtěl bych se zeptat, proč mi v latte šabloně neběží tento zápis
(konkrétně onMouseOver a onMouseOut). V normálním html kódu mi to funguje
bez problému. Dá se to nějak v Nette řešit?
<div id="historie"><a href="historie.php"><img alt="Historie" src="{$basePath}/images/historie.jpg" onmouseover=\"this.src='{$basePath}/images/historie1.jpg'\" onmouseout=\"this.src='{$basePath}/images/historie.jpg'\"></a></div>
Děkuju.
Editoval Jarek92 (22. 12. 2014 8:02)
- Michal Vyšinský
- Člen | 608
je cesta k obrázku dobře? IMO ti to $basePath escapuje, takže tam dej {$basePath|noescape} místo {$basePath}
- Jarek92
- Člen | 91
Tady je:
<div id="historie"><a href="historie.php"><img alt="Historie" src="/atletikabv/www/images/historie.jpg" onmouseover=\"this.src='""\/atletikabv\/www""/images/historie1.jpg'\" onmouseout=\"this.src='""\/atletikabv\/www""/images/historie.jpg'\"></a></div>
- Michal Vyšinský
- Člen | 608
Vždyť ti to escapuje. Jak v onmouseover tak v onmouseout použij {$basePath|noescape} (url původního obrázku je dobře, jelikož v src se nic neescapuje.
Edit: a taky oddělej ta zpětná lomítka – nemusíš nic escapovat ručně.
Editoval Michal Vyšinský (22. 12. 2014 10:07)
- Zax
- Člen | 370
Doporučuji jít na to ještě trochu jinak a využít toho, že nám Latte umožňuje zápis PHP proměnných jakoby nativně do JS, bez nutnosti jakkoliv řešit uvozovky ;-)
{var $src = $basePath . '/images/historie.jpg'}
{var $hover = $basePath . '/images/historie1.jpg'}
<img src="{$src}" onmouseover="this.src={$hover}" onmouseout="this.src={$src}">
Editoval Zax (22. 12. 2014 10:48)
- Jan Tvrdík
- Nette guru | 2595
Použití noescape
je blbost, takhle se to nedělá. Přímý
přepis toho úvodního zadaní s opraveným escapováním je toto:
<div id="historie">
<a href="historie.php">
<img alt="Historie"
src="{$basePath}/images/historie.jpg"
onmouseover="this.src = {$basePath} + '/images/historie1.jpg'"
onmouseout="this.src = {$basePath} + '/images/historie.jpg'">
</a>
</div>
Atributy on* obsahují JS a s {$basePath}
se tam pracuje jako
s JS proměnnou.