onMouseOver nefunkčí v latte souboru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jarek92
Člen | 91
+
0
-

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)

Jan Endel
Člen | 1016
+
0
-

Co znamená – neběží?

Jarek92
Člen | 91
+
0
-

Obrázek historie.jpg se nejprve načte v pořádku. Po najetí myši však obrázek zůstává stejný, přitom by měl přejít na historie1.jpg.

Michal Vyšinský
Člen | 608
+
0
-

je cesta k obrázku dobře? IMO ti to $basePath escapuje, takže tam dej {$basePath|noescape} místo {$basePath}

Jarek92
Člen | 91
+
0
-

{$basePath|noescape} bohužel nepomohlo. Cesta k obrázku je dobře, prvotní obrázek se zobrazí.

Michal Vyšinský
Člen | 608
+
0
-

Ukaž, jak vypadá html kód, co vyleze z latte.

marioff
Člen | 69
+
0
-

skopiruj zdrojovy kod ktory vygeneruje ta sablona (teda ten kusok kde je ten ten onmouseover)

Jarek92
Člen | 91
+
0
-

Tady je:

<div id="historie"><a href="historie.php"><img alt="Historie" src="/atletikabv/www/images/historie.jpg" onmouseover=\"this.src='"&quot;\/atletikabv\/www&quot;"/images/historie1.jpg'\" onmouseout=\"this.src='"&quot;\/atletikabv\/www&quot;"/images/historie.jpg'\"></a></div>
Michal Vyšinský
Člen | 608
+
+1
-

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)

Jarek92
Člen | 91
+
0
-

Díky moc za pomoc. Už to funguje. Bylo ale ještě potřeba odstranit zpětná lomítka před uvozovkami, proto mi to napoprvé s tím {$basePath|noescape} nejelo.

Zax
Člen | 370
+
+4
-

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
+
+5
-

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.

Jarek92
Člen | 91
+
0
-

Díky moc :)