質問: jhtml:script()と$ doc-> addscriptの違いは何ですか? 最近、特定のjsおよびcssファイルを各ページの<head>に挿入する必要があるモジュールを開発しました。最初は、私は使用しました:$doc =& jfactory::getdocument(); $doc->addscript(juri::base(true).'/modules/mod_x/js/mod_x.js'); ただし、キャッシュを有効にすると、サイトが/cacheのキャッシュバージョンと/modules/mod_x/js/の非キャッシュバージョンの両方をロードし、jsエラーが発生することに気付きました。これを次のように変更した場合:jhtml::script(juri::base().'modules/mod_x/js/mod_x.js'); スクリプトは、これらのエラーを解決するために、キャッシュから1回だけロードされました。私 ドキュメントで読む addscriptメソッドはjhtml:scriptメソッドよりも「低レベル」でしたが、それ以上に... もちろん、上記の[jhtml:scriptメソッド]を使用して自動的に実行されるいくつかの手順[jhtml:scriptが実行する]も手動でコーディングする必要があります[addscriptを使用する場合]。 ...これ以上の詳細はありません。違いは何ですか?私はjhtml:scriptがいずれかの時点でドキュメントオブジェクトに対してaddscriptを最終的に呼び出すと想定しますが、他の中間ステップが最初に行われますか?
回答: 2つの言葉で: jhtml::script()-特定のスクリプト(すでにjdocumentにアタッチされているものを除く)をオーバーライドできるようにします。いくつかの要因に依存します(@bakualの回答を参照)。 $doc->addscript()-上書きを確認せずに、スクリプトをドキュメントに直接添付します。 拡張機能の開発者は、スクリプトを追加するときにjhtml::script()を使用することを強くお勧めします。これにより、ユーザーは必要に応じて、特定のスクリプトを上書きできます。 cssにも同様の方法があります。