簡體   English   中英

如何判斷$(window).load()/ window.onload事件是否已經觸發?

[英]How to tell whether the $(window).load()/window.onload event has already fired?

我有一個腳本,通過另一個腳本動態插入。 該腳本中的代碼包含在$(window).load()事件中,因為它要求頁面上的圖像全部加載。 在某些瀏覽器中,它可以正常工作,但在其他瀏覽器中它似乎不會觸發,因為在運行代碼時頁面已經完成加載。

有沒有辦法檢查並查看頁面是否已經完成加載 - 通過jQuery還是JavaScript? (包括圖片)

在這種情況下,我無法訪問原始文檔的onload事件(除了通過加載的腳本更改它 - 但這似乎會出現同樣的問題)。

任何想法/解決方案/建議將不勝感激!

您可以嘗試設置通過超時調用的處理程序,該處理程序將檢查圖像以查看其屬性是否可用。 清除load事件處理程序中的計時器,這樣如果首先發生load事件,計時器將不會觸發。 如果屬性不可用,則load事件尚未觸發,並且您知道最終將調用您的處理程序。 如果是,那么您知道在設置處理程序之前發生了加載事件,您可以繼續操作。

偽代碼

 var timer = null;
 $(function() {
    $(window).load( function() {
        if (timer) {
           clearTimeout(timer);
           timer = null;
        }
        process();
    });
    timer = setTimeout( function() {
        if (checkAvailable())
           process();
        }
    }, 10*1000 ); // waits 10 seconds before checking
 });

 function checkAvailable()
 {
     var available = true;
     $('img').each( function() {
         try {
             if (this.height == 0) {
                available = false;
                return false;
             }
         }
         catch (e) {
             available = false;
             return false;
         }
      });
      return available;
  }

  function process() {
      ... do the real work here
  }

我寫了一個可能有用的插件: http//plugins.jquery.com/project/window-loaded

我認為如果你使用$(document).ready而不是$(window).load,你的問題就會自行解決 - 請參閱jquery文檔

不知道這是不是你想要的,但是你試過(?):

$(document).ready(function(){
    ...
});

http://docs.jquery.com/Events/ready#fn

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM