[英]domlistener on window.load event inside document.ready
盡管window.load在准備好后仍然可以工作,但該代碼仍無法工作。
$(document).ready(function(){google.maps.event.addDomListener(window,'load',function(){InitializeMap();});;
But If I write the code outside the ready function, it works fine.
$(document).ready(function () {
InitializeMap(); });
This code also works nice.
這是一個與jQuery相關的問題。 jQuery使用其自己的內部延遲對象來表示“就緒”回調函數的列表。 在此延遲的對象內,可能出於各種原因而設置了超時,也可能未設置超時,在某些情況下window.onload
被取消,甚至更多。 jQuery會做所有這些事情以確保跨瀏覽器的一致性。 從jQuery文檔中:
請注意,盡管DOM在頁面完全加載之前總是准備就緒,但是在.ready()處理程序期間執行的代碼中附加加載事件偵聽器通常並不安全。 例如,可以使用$ .getScript()之類的方法在頁面加載很長時間之后動態地加載腳本。 盡管.ready()添加的處理程序將始終在動態加載的腳本中執行,但是窗口的load事件已經發生,並且這些偵聽器將永遠不會運行。
下面的普通JavaScript解決方案可以按您期望的那樣工作,因為jQuery的相同代碼實現中並沒有所有其他麻煩:
document.addEventListener('DOMContentLoaded', () => { google.maps.event.addDomListener(window, 'load', function() { alert('custom event'); }); });
<script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.