2012-04-16 19 views

回答

6

here

引擎蓋下:$(文件)。就緒()正如你對約翰 期待Resig的,jQuery的方法來確定當DOM準備好使用的 品種優化。例如,如果瀏覽器支持 DOMContentLoaded事件(與許多非IE瀏覽器一樣),那麼它將在該事件上觸發 。但是,直到文檔的 readyState達到「完成」(通常稍後),IE才能安全地啓動。如果沒有 這些優化可用,則window.onload將觸發 事件。

這些事件與HTML標記中的位置無關,因爲即使在渲染</body>時,其他事件仍在繼續。

3

不,它是不一樣的,您將<script>標籤中的結束</body>標記之前避免阻塞在舊版瀏覽器的HTML的渲染,據我所知,但你不能保證DOM是「準備」

0

不完全。 $(document).ready();對所謂的DOMContentLoaded事件作出反應,該事件在加載DOM並且瀏覽器知道頁面上的所有元素(而非內容本身)後立即觸發。

爲什麼代碼通常放在這些塊中的主要原因與阻止並行加載的阻止沒有多大關係,而是確保在加載頁面期間要操作的元素實際加載並存在於DOM樹中。操縱瀏覽器不知道的元素沒有多大意義?

將頁面底部的JavaScript內容(或任何其他內容)放在頁面的底部實際上與頁面加載完成後觸發的onload事件(包括內容本身)更緊密相關。無論哪種方式,幾乎可以肯定$(document).ready()塊內的內容將在頁面底部的內容之前執行,但如果加載ready()塊內的代碼所依賴的外部庫,則不能將這些內容放在頁面的底部。

一般而言,如果您的代碼不依賴外部庫和成功加載DOM,則可以放心地將其放在頁面的底部。如果你有東西需要在加載完DOM後立即執行,那麼你絕對需要在$(document).ready()塊中使用該代碼,但是請記住,即使在頁面中間,也可以將該塊放置到任意位置(有時候這可能是個不錯的伎倆)。

相關問題