Javascript Window.Onload 函数链

发布于 2024-07-10 11:35:17 字数 330 浏览 11 评论 0原文

只是为了进行实验,我一直在尝试确定在网络浏览器中非破坏性链接 window.onload 函数的不同方法。 这是我到目前为止的想法:

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

我看到的问题是,每次链接一个函数时,它都会向堆栈添加另一层函数调用。 有没有更好的方法来解决这个问题,而不会给调用堆栈增加不必要的深度?

Just for the sake of experimentation, I've been trying to determine different ways to non-destructively chain window.onload functions in a web browser. This is the idea of what I have so far:

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

The problem I see with this is that every time you chain a function, it adds another level of function calls to the stack. Is there a better way to go about this that doesn't add unnecessary depth to the call stack?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

燕归巢 2024-07-17 11:35:17

使用 addEventListener/attachEvent 可能会更好吗?

高级事件注册模型

May be it will be better to use addEventListener/attachEvent?

Advanced event registration models

爱的十字路口 2024-07-17 11:35:17

你可以看看 jQuery 他们是如何处理这个问题的。

来自 jQuery 文档

您可以在页面上添加任意数量的 $(document).ready 事件。 然后按照添加的顺序执行这些函数。

You could have a look at jQuery how they handle that.

From the jQuery docs:

You can have as many $(document).ready events on your page as you like. The functions are then executed in the order they were added.

回忆凄美了谁 2024-07-17 11:35:17

我宁愿使用“足够好”的 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/

I'd rather use the "good enough" 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));});
}

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文