2012-05-13 117 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有由

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

創建b.js;

現在我想調用show()哪個在b.js中,但是會出錯,因爲b.js沒有加載;

我想添加一些代碼來阻止頁面加載。

while(){}


實際上,我瞭解到b.js應該在函數show被調用時加載;

但是點擊事件呢?另外,我必須把show()放在頁面中。

現在,我把另一個JS(base.js)到head標籤,上面的代碼將是這樣的:

... 
<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> 
... 

例如,有兩個click事件綁定到base.js和b。 js(通過a.js加載ansync),當用戶點擊頁面中的按鈕時,綁定在base.js中的事件將立即被調用,但隨後...錯誤...

我必須把調用者身體標籤。

+0

在一些功能這一說法? document.getElementsByTagName( '頭')[0] .appendChild(使用document.createElement( '腳本')); – 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請參閱更新。 –