Fehler beim Einbinden von JavaScript

Wie hier beschrieben möchte ich gerne ein JavaScript-Schnipsel von browser-udpate.org einbinden, und zwar dieses hier: <script type="text/javascript"> var $buoop = {vs:{i:9,f:15,o:12.1,s:5.1}}; $buoop.ol = window.onload; window.onload=function(){ try {if ($buoop.ol) $buoop.ol();}catch (e) {} var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", "//browser-update.org/update.js"); document.body.appendChild(e); } </script> Im Frontend erhalte ich dann aber diesen Fehler: Syntax Error in template "/srv/www/htdocs/kampfsport24/templates/emotion\_mitho/frontend/index/header.tpl" on line 11 "var $buoop = {vs:{i:9,f:15,o:12.1,s:5.1}};" - Unexpected ":", expected one of: "}" , " " , ATTR in Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php on line 657 Der Doppelpunkt im Objektliteral wird angemeckert. Wenn ich statt var $buoop = {vs:{i:9,f:15,o:12.1,s:5.1}}; nur var $buoop = {}; schreibe ist alles ok. Die Syntax stimmt aber, muss ich beim Einbinden innerhalb des templates noch was beachten?

Probier’ mal doppelte Anführungszeichen: var $buoop = {"vs":{"i":9,"f":15,"o":12.1,"s":5.1}};

Das Problem ist die Smarty-Engine die mit den Tags “{” und “}” arbeitet, die auch von Javascript benutzt werden. Einfach den javascript script block mit {literal}{/literal} einschließen: {literal}<script type="text/javascript">.......</script>{/literal} Dann interpretiert Smarty die “{” und “}” nicht mehr als Smartyangaben. PS: http://wiki.shopware.de/Template-Cheats … _1014.html -> hilft oft weiter

1 Like

Danke schön, mit {literal} klappt’s. Cheatsheet kannte ich schon, war mir nur nicht bewusst.