it-swarm.com.de

window.addEvent ('domready', ...) Alternative

Ich verwende eine angepasste Version von Google Code Prettify auf meiner Seite, mit der ich Mathematica Code hervorheben kann. Für die korrekte Eingabe des notwendigen js-Codes ist das JPrettify Plugin sehr praktisch. Da dieses Plugin anscheinend nicht mehr offiziell verfügbar ist und ich es trotzdem optimieren muss, habe ich meine eigene Version auf GitHub eingerichtet.

Gestern war ich wies auf die Tatsache hin dass es in Joomla 3 nicht funktioniert und nach einigem Debuggen haben wir herausgefunden, dass die Funktion PrettyPrint nicht aufgerufen wird, wenn sie wie folgt eingefügt wird der html kopf:

window.addEvent('domready', function() { prettyPrint();});

Auf diese Weise erledigt das JPrettify (Zeile 53) das. Nach einigem googeln stellt sich heraus, dass das Problem die mootools Bibliothek ist. Wir haben das Problem durch statisches Einfügen gelöst

<body onload="PrettyPrint()">

in die Hauptvorlage PHP-Datei, die natürlich nicht der richtige Weg ist, um zu gehen.

Frage: Was ist die beste Methode, um das Plugin für verschiedene Versionen von Joomla zu verwenden, um PrettyPrint() aufzurufen?

6
halirutan

Anstatt Body Onload durchzuführen, sollte Folgendes funktionieren:

$(document).ready(function() {
    PrettyPrint();
});

Oder wenn Sie lieber Javascript verwenden, um festzustellen, wann die Funktion aufgerufen wird, können Sie Folgendes verwenden:

window.onload = function() {
    PrettyPrint();
};
2
Lodder

In Joomla 3 wird derzeit daran gearbeitet, Mootools-basierte Skripte zu entfernen und durch jQuery-Skripte zu ersetzen. Der Hauptgrund, warum Ihr Code fehlschlägt, ist, dass Sie Mootools nicht selbst laden. In früheren Versionen von Joomla wurde es möglicherweise vom Hauptlayout oder einem Modul geladen, und jetzt wird es nicht mehr geladen, da die Skripte es nicht mehr benötigen.

Wenn Sie es für Ihr Modul benötigen, laden Sie es mit JHtmlBehavior::famework() ( http://api.joomla.org/cms-3/classes/JHtmlBehavior.html#method_framework ).

Gleiches gilt, wenn Sie Ihr Skript für die Verwendung von jQuery umschreiben. Verlasse dich nicht darauf, dass es geladen wird, sage Joomla, dass du es brauchst. Joomla wird dafür sorgen, dass es nur einmal geladen wird. Zum Laden von jQuery verwenden Sie JHtmlJquery::framework() ( http://api.joomla.org/cms-3/classes/JHtmlJquery.html#method_framework ).

2
Bakual