2015-02-22 16 views
7

Ich mag würde versuchen, die "async" Attribut in Prototype JavaScript script Tag in Magento 1.9.1 einzufügen:HTML <script> Asynchron-Attribut in Magento

<script type="text/javascript" src="http://www.mywebsite.com/media/js/ec1651c8b1a4ea49a916679f1e120ccf.js"></script> 

ich dieses Ergebnis hätte:

<script type="text/javascript" src="http://www.mywebsite.com/media/js/ec1651c8b1a4ea49a916679f1e120ccf.js" async></script> 

Wo muss ich "async" einfügen? Was ist die Datei mit diesem Zeilencode? Danke

Antwort

15

Betrachten Sie die Datei app/design/frontend/<yourlayout>/<yourtheme>/layout/page.xml (oder kopieren Sie app/design/frontend/base/default/layout/page.xml in Ihr Thema).

Innerhalb dieser Datei, suchen Sie nach den folgenden Zeilen:

<!-- ... --> 
<block type="page/html_head" name="head" as="head"> 
    <action method="addJs"><script>prototype/prototype.js</script></action> 
    <!-- ... --> 
</block> 
<!-- ... --> 

Und addJs Anrufe ändern:

<!-- ... --> 
<block type="page/html_head" name="head" as="head"> 
    <action method="addJs"><script>prototype/prototype.js</script><params>async</params></action> 
    <!-- ... --> 
</block> 
<!-- ... --> 

Als Ihr das Verschmelzen JavaScript-Funktion von magento verwenden, müssen Sie diese anwenden Änderung an jeder addJs Definition, weil Magento Dateien durch params gruppiert.

+0

W3Shool sagt: Das Asynchron-Attribut nur für externe Skripte (und sollten nur verwendet werden, wenn das Attribut src vorhanden ist). Also, warum willst du es verwenden, wenn der Prototyp lokal ist? – TonkBerlin

+0

@TonkBerlin Ich ziehe es vor, anstelle von W3School auf das [Mozilla Developer Network] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) zu verweisen ;-) Das Denken ist 'async 'haben nur Sinn mit Skript, die ein 'src'-Attribut (im Gegensatz zu Inline-Skript) haben. In diesem Fall wird prototype.js nicht inline eingeschlossen, sondern vom Browser basierend auf einem 'src' Attribut geladen. – GiDo

+0

Ist es nützlich, den Inhalt ohne Funktion zu laden, wenn die .js nicht geladen wird? – TonkBerlin

0

Sie machen einen kleinen Fehler. Dies ist eigentlich die richtige Antwort für die obige Frage.

<!-- ... --> 
 
<block type="page/html_head" name="head" as="head"> 
 
    <action method="addJs"><script>prototype/prototype.js</script><params>async="async"</params></action> 
 
    <!-- ... --> 
 
</block> 
 
<!-- ... -->

+0

Nein, das ist falsch! – TonkBerlin