11

これらのアプローチの両方がスクリプトを適切にロードし、スクリプトを使用する(および/またはコールバックを使用する)前に適切な時間待機すると仮定すると、これらのアプローチの主な違いは何ですか。

注:最初にjQueryを使用することを理解しています(これはより大きなダウンロードなどです)。私が本当に興味を持っているのは、これらのアプローチの後遺症です。スクリプトを他のスコープとは異なるスコープに配置しますか?等。

jQuery:

function loadScript() {
    $.getScript('http://www.mydomain/myscript.js');
}

体に追加:

function loadScript() {
   var script= document.createElement('script');
   script.type= 'text/javascript';
   script.src= 'http://www.mydomain/myscript.js';
   script.async = true;
   document.body.appendChild(script);
}

頭に追加:

function loadScript() {
   var head= document.getElementsByTagName('head')[0];
   var script= document.createElement('script');
   script.type= 'text/javascript';
   script.src= 'http://www.mydomain/myscript.js';
   script.async = true;
   head.appendChild(script);
}
4

3 に答える 3

5

jQueryは、存在する場合はscript要素を追加し、存在しない場合は要素を追加します。内部的には、コードは似ています。最終的な結果は同じになります。どちらのアプローチも、グローバルスコープで新しいコードを実行します。headdocument

于 2011-04-26T14:29:05.360 に答える
2

Jqueryメソッドのドキュメントには次のように書かれています。

GET HTTPリクエストを使用してサーバーからJavaScriptファイルをロードし、それを実行します。

つまり、インポートが成功すると、インポートされたjavascriptがstraigtで呼び出されます。

頭に追加:ブラウザが最後の子としてscript-tagを追加し、コンテンツを実行することを意味します(headタグの最後に手動でタグを追加した場合も同じです)。本文への追加:これは、ブラウザがスクリプトタグを本文タグの最後の子として追加し、そのコンテンツを実行することを意味します(本文タグの最後に手動でタグを追加した場合も同じです)。

于 2011-04-26T14:35:30.303 に答える
2

jQueryのgetScript関数はデフォルトでキャッシュを無効にします。つまり、ブラウザはページが要求されるたびにスクリプトをダウンロードします(前の回答はこちらを参照)。loadScript一方、関数はキャッシングを利用する必要があります。

于 2014-05-11T19:50:39.963 に答える