2011-01-18 5 views
1

私は(と同様に)このような何かをしたいと思い:私はそれをロードし、それをロードした後に実行を継続したいと思いますheadscriptにないjavascriptで `using`を実装する方法は?

using("content/jquery.js"); 

$("div").fadeOut(); 

のでcontent/jquery.js場合。

これを実装することは可能ですか、それとも類似していますか?注:1を超える可能性がありますusing

答えて

4

これらをスクリプトローダーといいます。

あなたは非常によく似た方法で動作しますRequireJSを見て、取ることができます:

require(["helper/util"], function() { 
    //This function is called when scripts/helper/util.js is loaded. 
}); 

あり、むしろ依存関係よりも非同期スクリプトのロードに、より集中しているLabJSControlJSは、まただが、チェックする価値があるかもしれませんでる。また、このカテゴリーでは、私たち自身の@ jAndyのSupplyJSです。

+0

はsupplyJSを忘れないでください:私は忘れO)https://github.com/jAndreas/Supply – jAndy

1

あなたが前もって呼び出すことになります機能の名前を知っている場合は、その存在を確認するためにtypeofを使用することができます。

if (typeof($) == 'function') { 
    // Code here that uses jQuery 
} else { 
    // Something else here that loads the script. 
} 

あなたが使用することがありますどのような機能を特定していない場合はスクリプト要素のリストを取得してチェックすることをお勧めします。これらの行にもっと何か:

var scripts = document.getElementsByTagName('script'); 

for (var i = 0, l = scripts.length; i < l; ++i) { 
    if (scripts[i].src == myVal) { 
    // do something here 
    } else { 
    // wait for the script to load, or just leave off the else. 
    } 
} 

頭の上から私が考えることができる2つのアプローチはありますか?

2

あなたはgetScriptを使用することができます。

$.getScript('test.js', function() { 
    alert('Load was performed.'); 
}); 
+0

1良い答えを。この例ではOPがjQueryをロードしようとしているので、これはjQueryを使用しているので面白いです。しかし、あなたはそれをすべて始めるいくつかのスクリプトを持っていなければなりません、それはちょうどあなたのニーズに依存します。 –

+0

ええ、私もそれを見ましたが、彼が何を望んでいたのか分かりませんでした。 JSファイルを動的にロードするには[その他の方法](http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml)や[その他の方法](http://unixpapa.com/js/dyna.html)がありますがjQueryはコールバックを提供するので、おそらくそれは良いでしょう。 – vol7ron

+0

ソースコードを見ると、 'getScript'が' head'にスクリプトを挿入し、 'script'で' onload'イベントを使ってコールバック関数を実行しているようです...面白いです。 – BrunoLM