2012-05-13 33 views
0
... 
<head> 
    <script type="text/javascript" src="a.js"></script> 
</head> 
<body> 
    <button id="test">click me</button> 
    <script type="text/javascript"> 
     show(); 
     document.getElementById('test').onclick=function(){ 
      show(); 
     } 
    </script> 
</body> 
</html> 

ページ幅ブロックする方法:は、上記のコードはJavaScript

私はa.jsで、<head>タグにa.jsを置くを

b.jsで
document.getElementsByTagName('head')[0].appendChild(document.createElement('script')); function show(){...} 

によって作成b.jsがあります。

今、b.jsがロードされていないため、b.jsにはエラーが発生しますが、show()を呼び出したいと思います。

ページの読み込みをブロックするコードを追加したいとします。

while(){}


実際には、関数showが呼び出されたときにb.jsを読み込むべきであることを知りました。

でも、クリックイベントはどうでしょうか?また、show()をページに配置する必要があります。

今、私は頭のタグに別のjs(base.js)を入れ、上記のコードは次のようになります。

... 
<head> 
<script type="text/javascript" src="base.js"></script> 
<script type="text/javascript" src="a.js"></script> 
</head> 
<body> 
    <button id="test"></button> 
    <script type="text/javascript"> 
     //invoke button click event from base.js and b.js 
    </script> 
</body> 
... 

例えば、2つのクリックイベントbase.jsとBに特異的に結合するがあります。 js(a.jsでansyncをロードした場合)、ユーザーがページ内のボタンをクリックすると、base.jsにバインドされたイベントがすぐに呼び出されますが、エラー...

ボディタグ。

+0

は、いくつかの機能では、このステートメントですか? document.getElementsByTagName( 'head')[0] .appendChild(document.createElement( 'script')); – Adil

+0

"ページの読み込みをブロックするコードを追加したい。"どのページ ???またはページの読み込みが完了した後でshow()を呼びたい –

答えて

0

ページの読み込みをブロックする代わりに、ウィンドウのonloadイベントでコードを実行しないのはなぜですか?

window.onload = function() { 
    show(); 
}; 
0
あなたは、そのスクリプトから何かを実行する前に、彼らがロードされていることを確認するためにonloadイベントに耳を傾けることができ

//a simple script loader 
function loadScript(url,callback){ 
    var s = document.createElement('script');     //new script 
    var document.getElementsByTagName('head')[0].appendChild(s); //append to head 
    s.onload = function(){          //add onload 
     callback();            //callback when done 
    } 
    s.src = url;             //start download 
} 

//load b.js and run "show()" when b.js is loaded 
loadScript('b.js',function(){ 
    show(); 
}); 
1

あなたはb.jsがにロードされるまで待機する必要があります

jQueryのメソッド:。

$("<script>").attr("src","b.js").appendTo("head").load(show); 

ネイティブのJavaScript:

var ele = document.createElement('script'); 
ele.src = "b.js"; 
document.getElementsByTagName('head')[0].appendChild(ele); 
ele.addEventListener("load",show,false); 
+2

これはjquery – Starx

+0

としてタグ付けされていません@Starx更新を参照してください。 –

関連する問題