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 „Gefällt mir“
Danke schön, mit {literal} klappt’s. Cheatsheet kannte ich schon, war mir nur nicht bewusst.