私はjQueryプラグインを書きましたjquery.plugin.js
. このプラグインを多数のサイトで使用したいと考えています。
私がやりたいことは、.js コードをその上部に書き込んで、.js コードをjquery.plugin.js
ロードしjquery.main.js
て実行すること$
ですjquery.plugin.js
。
ありがとう。
私はjQueryプラグインを書きましたjquery.plugin.js
. このプラグインを多数のサイトで使用したいと考えています。
私がやりたいことは、.js コードをその上部に書き込んで、.js コードをjquery.plugin.js
ロードしjquery.main.js
て実行すること$
ですjquery.plugin.js
。
ありがとう。
おそらくやりたいことは、jsで新しいタグを作成することです
script = document.createElement('script');
script.src = 'URL-TO-JQUERY';
そして、その要素を最初のタグの前に追加します。
document.body.insertBefore(document.getElementsByTagName('script')[0], script);
これは、スクリプトが他の js の前に挿入されるため、おそらく機能します。(頭以外)
はい、jQuery が存在するかどうかを確認する間隔だけです。
interval = setInterval(check, 100);
function check(){
if($.version){
// Exec script
}
}
requirejs のように、必要な処理を行う AMD パッケージがいくつかありますが、最初にそれらをロードする必要があります。
ポーリング手法 (jQuery を動的にロードし、$ が存在するまでポーリングする) を使用できますが、あまりエレガントでも効率的でもありません。
また、onload イベント ハンドラーを動的 jQuery スクリプトにアタッチすることもできます。これにより、jQuery のロード後にプラグインがトリガーされます。もちろん、このようなイベント ハンドラーにはブラウザー間の互換性の問題があるため、jQuery を使用して記述する方が簡単です。
要するに、これは大変な作業であり、通常は 2 つのスクリプト タグを記述した方がよいということです。
PS: 上記のテクニックのいくつかは、この記事で説明されています: http://www.stevesouders.com/blog/2008/12/27/coupling-async-scripts/
jQuery が既にロードされている場合にのみ機能します。
$.when($.getScript("path_to_script")).then(function() {
alert("loaded");
})
フィドル - http://jsfiddle.net/fLuDd/
var fileref = document.createElement('script')
fileref.setAttribute("type", "text/javascript")
fileref.setAttribute("src", 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js')
document.getElementsByTagName("head")[0].appendChild(fileref)
var t = setInterval(function() {
if (typeof(jQuery) == 'function') {
alert("jquery loaded");
clearInterval(t);
}
}, 2000);
フィドル - http://jsfiddle.net/fLuDd/1/
jquery.main.js
上記のjquery.plugin.js
. スクリプトタグをこの順序で配置すると機能するはずです。
<script src="jquery.main.js"></script>
<script src="jquery.plugin.js"></script>
html を完全に制御できない場合、または jQuery が他の場所からもロードされる可能性がある場合は、これを実行して、ロードされているかどうかを確認し、必要な場合にのみロードします。
グーグルから読み込む
if (typeof jQuery == 'undefined') {
document.write('<script type="text/javascript" src="http://www.google.com/jsapi"></script>');
document.write('<script type="text/javascript">');
google.load("jquery", "1.4.2");
document.write('</script>');
}
同じサーバーからロード
if (typeof jQuery == 'undefined') {
document.write('<script type="text/javascript" src="path/to/jquery.min.js"></script>');
}