如果引入的其他js檔案中也存在window.onload事件如何處理

admin發表於2017-03-28

大家都知道,window.onload事件處理函式只會最有一個有效的,前面的都會被最後一個覆蓋。

但是如果你如果引入的js檔案的程式碼中也存在這樣一個事件處理函式,並且當前檔案中也需要用到這樣的事件處理函式,那麼必然會導致一個會失效,這並不是我們希望的,下面就通過程式碼例項介紹一下如何解決此問題。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
if(window.onload!=null){ 
  eval("prefunc="+window.onload.toString()); 
  window.onload=function(){
    prefunc();
    addReadResource();
  };
}

上面的程式碼實現了我們的要求,下面介紹一下它的實現原理。

實現原理:

首先判斷是否已經註冊window.onload事件處理函式,如果已經有註冊的,那麼通過toString()函式獲取已經註冊事件處理函式的函式體,但是這裡需要特別注意的是toString()函式獲取的是一個字串,所以必須外部用eval()函式運算一下,最後prefunc儲存就是一個指向函式引用。最後再定義一個事件處理函式,將prefunc()放在這個事件處理函式中執行就可以了。

相關閱讀:

1.window.onload可以參閱window.onload一章節。

2.eval()函式可以參閱javascript eval()一章節。

相關文章