web-dev-qa-db-ja.com

window.addEvent( 'domready'、...)代替

Mathematicaコードを強調表示できるように、自分のページでGoogleコードprettifyの適応バージョンを使用しています。必要なjsコードを正しく挿入するには、 JPrettify プラグインが非常に便利です。このプラグインは正式に利用できなくなったようで、とにかくそれを微調整する必要があるので、私は GitHub に独自のバージョンを設定しました。

昨日、私は 事実を指摘しました Joomla 3では機能しないことをデバッグしましたが、いくつかのデバッグの後で、次のように挿入されたときに関数PrettyPrintが呼び出されないことがわかりましたHTMLヘッド:

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

これが JPrettify (53行目)のやり方です。グーグルで調べた結果、問題は mootools ライブラリであることがわかりました。静的に挿入することで問題を解決しました

_<body onload="PrettyPrint()">
_

メインテンプレートのphpファイルに挿入します。もちろん、これは正しい方法ではありません。

質問:プラグインをJoomlaの異なるバージョンで動作させるには、PrettyPrint()を呼び出すのに最適な方法は何ですか?

6
halirutan

Body onloadを実行するのではなく、以下が機能するはずです。

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

または、JavaScriptを使用して関数がいつ呼び出されたかを判断する場合は、次のように使用できます。

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

Joomla 3には、Mootoolsベースのスクリプトを削除してjQueryのスクリプトに置き換える作業が進行中です。コードが失敗する主な問題は、Mootoolsを自分でロードしないことです。以前のバージョンのJoomlaでは、メインレイアウトまたはモジュールによって読み込まれていた可能性がありますが、スクリプトでは不要になったため、読み込まれなくなりました。

したがって、モジュールに必要な場合は、JHtmlBehavior::famework()http://api.joomla.org/cms-3/classes/JHtmlBehavior.html#method_framework )を使用してロードします。

JQueryを使用するようにスクリプトを書き直す場合も同様です。それがロードされることを期待しないでください、あなたはそれが必要であることをJoomlaに伝えます。 Joomlaは一度だけロードされるように注意します。 jQueryをロードするには、JHtmlJquery::framework()http://api.joomla.org/cms-3/classes/JHtmlJquery.html#method_framework )を使用します。

2
Bakual