2008-12-14 66 views
1

只是爲了實驗的緣故,我一直在試圖確定在Web瀏覽器中以非破壞性方式鏈接window.onload函數的不同方法。這是我到目前爲止的想法:Javascript Window.Onload Function Chaining

var load = window.onload; 
var newFunction = function(){ 
    alert("ha!"); 
} 
window.onload = function(){ 
    load(); 
    newFunction(); 
} 

我這個看到的問題是,每次你鏈接一個函數時,它增加的功能的另一級調用堆棧。有沒有更好的方法來解決這個問題,不會給調用堆棧增加不必要的深度?

回答

0

他們如何處理,你可以看看jQuery

jQuery docs

你可以有多個$(document)。就緒事件,您的網頁上,只要你喜歡。然後按照它們添加的順序執行函數。

0

我寧願使用 「足夠好」 的addEvent:

var addEvent = function(obj, type, fn) { 
     if (obj.addEventListener) 
       obj.addEventListener(type, fn, false); 
     else if (obj.attachEvent) 
       obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));}); 
} 

來源:http://www.ilfilosofo.com/blog/2008/04/14/addevent-preserving-this/