2012-08-15 61 views
0

我正在使用jQueryJavaScript中寫一頁網頁應用程序。我將我的JavaScript源和jQuery添加到HTML頁面,並在頁面完全呈現時註冊我的函數以供調用。如何添加處理程序以在呈現HTML時執行?

<script type="text/javascript" src="lib/jquery-1.8.0.js"></script> 
<script type="text/javascript" src="src/myapp.js"></script> 
<script type="text/javascript">$(MyApp.onReady)</script> 

它的工作原理,但我不喜歡有內部HTML代碼

現在我想知道我是否可以擺脫最後一行。是否有必要在HTML中調用$(MyApp.onReady)?當完成了所有的HTML控件呈現

回答

1

您可以將此代碼添加到您的myapp.js的尾巴文件中像:

/* myapp.js */ 
var MyApp = (function(app, $) { 
    // your logic... 
    // defining app.onReady function... 
    $(function() { 
     app.onReady(); 
    }); 

    return app; 
})(MyApp || {}, jQuery); 
1

$(document).ready被調用時,你可以把你的代碼在這個方法中,或致電它

$(document).ready(function(){ 
    //your code here 
    //$(MyApp.onReady) 
}); 
1

你的方法您可以將$(MyApp.onReady);線內myapp.js。所有你需要注意的是在加載文件之前加載jQuery

2

您可以在myapp.js文件中回覆document.ready。這將確保DOM樹是準備就緒:

$(document).ready(function() { 
    // do whatever you want here, confident that the DOM is loaded 
}); 

如果您需要等到整個頁面在瀏覽器(圖像和這樣)渲染,可以負載響應事件:

$(window).load(function() { 
    // everything is rendered in the browser 
}); 

你通常不需要等到load,我會建議嘗試第一個片段,然後訴諸第二個片段。

+0

'$(window).load()'會更好嗎? OP請求在頁面完全呈現時調用該函數 – billyonecan 2012-08-15 15:12:43

+0

@deifwud取決於期望的行爲,我會將其添加到答案 - 謝謝。 – jbabey 2012-08-15 15:14:36

1

你需要調用MyApp.onReady()地方。如果你將訪問DOM(你可能會這樣做),是的,你必須等待DOM被處理。您可以通過在body標籤關閉之前將MyApp.onready()放入script中來避免必須使用document.ready。屆時,DOM將被解析。但是,如果您不訪問DOM,則可以在任何地方執行MyApp.onReady()

1

看看這個問題:Running javascript after page is fully rendered

基本上,它看起來像你想設置的功能,在window.onload,頁面已經呈現在此之後將運行。由於我看不到你的myapp.js,我不知道onReady函數在那裏做什麼。你是否保留這條線取決於該功能的功能。正如Grampa所說,您可以將該行放在JavaScript文件中。

相關問題