2011-06-18 76 views
1

所以我使用jQuery和我寫的一些插件。

我在$(document).ready(function(){})塊中完成所有初始化操作,但是當整個DOM已經加載並準備使用時會執行這個操作。

但是,這將需要很長時間,例如。當有服務器負載時。或者,也許用戶點擊已加載的按鈕,而其餘頁面尚未加載(並且因此document.ready()尚未執行),在這種情況下,它不會執行任何操作。

那麼,如果我想要一個代碼在頁面的相關部分被加載後立即執行,而不是等待整個頁面加載?

我知道在這個js操作的html之後放置內聯代碼會做訣竅,但是如果代碼使用像jQuery那樣的尚未加載的庫,該怎麼辦?

+0

您可以看看jQuery的'live'方法:http://api.jquery.com/live – Blaise

回答

0

我知道在這個js操作的html後面放置內聯代碼會做訣竅,但如果代碼使用像jQuery那樣的尚未加載的庫?

這將是唯一的方法。 HTML從上到下被解析。所以你可以期望你包含的每個腳本在你加入之後都可以訪問。

+0

不要瀏覽器與頁面並行加載.js文件嗎?我認爲,當瀏覽器超過其聲明的時,不能保證.js文件被加載和解析。 – John

+0

不,他們沒有。否則''不起作用... –

0

頁面應仍然工作沒有JavaScript反正,所以點擊按鈕非常快,用戶將只是暫時有一個稍有降低體驗。

這就是說,當HTML文檔加載所有腳本時,DOM基本上已準備就緒。由於在加載JavaScript代碼之前無法執行有意義的JavaScript,因此我會仔細研究頁面性能。發送HTML文檔和2,3個JavaScript文件不應該太慢。

您還可以使用舊式內聯事件處理程序,如<button onclick="registerButtonClickEvent()">。但是,這會引入一個複雜的,可能有問題的,難以測試的暫時性事件層。

0

onload事件不是由所有html元素觸發的,所以你強迫等待窗口加載。因爲它必須等待文檔準備好,所以加載jQuery的位置並不重要。加載jQuery和文檔其餘部分所需的總時間將是相同的。

0

如果您的<script src="jquery-whatever.js>行先於HTML中的第一個可單擊元素,那麼可以保證在用戶有任何有用的點擊之前加載並運行jquery庫。

只要不添加異步或推遲屬性到腳本元素。

相關問題