如果我們在關閉body的腳本標籤中調用javascript方法myMethod()
,是不是等同於在jQuery的document.ready函數中調用myMethod()
?如果不是,爲什麼?將腳本標籤放在</body>之前的標籤相當於jQuery的document.ready方法
回答
從here:
引擎蓋下:$(文件)。就緒()正如你對約翰 期待Resig的,jQuery的方法來確定當DOM準備好使用的 品種優化。例如,如果瀏覽器支持 DOMContentLoaded事件(與許多非IE瀏覽器一樣),那麼它將在該事件上觸發 。但是,直到文檔的 readyState達到「完成」(通常稍後),IE才能安全地啓動。如果沒有 這些優化可用,則window.onload將觸發 事件。
這些事件與HTML標記中的位置無關,因爲即使在渲染</body>
時,其他事件仍在繼續。
不,它是不一樣的,您將<script>
標籤中的結束</body>
標記之前避免阻塞在舊版瀏覽器的HTML的渲染,據我所知,但你不能保證DOM是「準備」
不完全。 $(document).ready();
對所謂的DOMContentLoaded
事件作出反應,該事件在加載DOM並且瀏覽器知道頁面上的所有元素(而非內容本身)後立即觸發。
爲什麼代碼通常放在這些塊中的主要原因與阻止並行加載的阻止沒有多大關係,而是確保在加載頁面期間要操作的元素實際加載並存在於DOM樹中。操縱瀏覽器不知道的元素沒有多大意義?
將頁面底部的JavaScript內容(或任何其他內容)放在頁面的底部實際上與頁面加載完成後觸發的onload
事件(包括內容本身)更緊密相關。無論哪種方式,幾乎可以肯定$(document).ready()
塊內的內容將在頁面底部的內容之前執行,但如果加載ready()
塊內的代碼所依賴的外部庫,則不能將這些內容放在頁面的底部。
一般而言,如果您的代碼不依賴外部庫和成功加載DOM,則可以放心地將其放在頁面的底部。如果你有東西需要在加載完DOM後立即執行,那麼你絕對需要在$(document).ready()
塊中使用該代碼,但是請記住,即使在頁面中間,也可以將該塊放置到任意位置(有時候這可能是個不錯的伎倆)。
- 1. <script>之前的標籤位置<html>標籤
- 2. 在document.ready()之前獲取HTML標籤,DOM呈現之前
- 3. 獲取當前腳本標籤
- 4. Xpath。無法選擇標籤文本 - 當<input>之類的其他元素位於<label>標籤
- 5. jQuery和:之前CSS標籤
- 6. JS:body標籤onload相當於?
- 7. 如何將<c:out>標籤放入<c:if>標籤內?
- 8. jQuery標籤 - 基於標籤文本選擇標籤
- 9. jQuery腳本標籤衝突
- 10. jQuery將不會在<%=%>小腳本標籤
- 11. 鏈接,腳本之間的標籤</body>和</html>
- 12. 內容腳本注入jQuery的,只有噹噹前標籤沒有jQuery的
- 13. 需要當前選定的標籤ID爲jQuery標籤
- 14. 如何在JavaScript標籤內放置AdSense廣告(腳本標籤)?
- 15. 腳本標籤
- 16. 在document.ready之後刪除腳本include標籤總是安全的嗎?
- 17. 設置活動標籤當前標籤
- 18. jQuery遍歷 - 發現之前的標籤到當前輸入
- 19. preg匹配標籤之間的標籤之間的相同標籤
- 20. <audio>標籤應該放在<head>標籤中嗎?
- 21. 變化的jQuery當前標籤
- 22. 在<a href>標籤前移動<a id>標籤
- 23. 如何獲得我在Jquery標籤中命名的當前標籤標題UI
- 24. jQuery的標籤:當標籤處於活動狀態使用AJAX
- 25. 相當於HTML屬性的ASP.NET標籤
- 26. 關於表單標籤內的腳本標籤
- 27. jQuery - 將動態腳本移動到關閉DNN/Evoq中的body標籤之前
- 28. CSS標籤順序混亂,當應用於<input>標籤
- 29. 腳本標籤和「<%....%>」標籤有什麼區別?
- 30. 將附屬品跟蹤標籤放在jquery ui標籤上