gpt4 book ai didi

asp.net - Javascript 中的 window.onload 有 += 吗?

转载 作者:可可西里 更新时间:2023-11-01 02:49:55 26 4
gpt4 key购买 nike

最近遇到了一个问题:

在我网站的所有 html 页面中,我在 body onLoad 事件中调用了一个函数:

<body onLoad="func1();">

这是我的 html 模板的一部分,所以它出现在我网站的每个页面上,我无法更改它。现在,问题是在某些页面上,我需要调用一些其他函数 onload,我尝试使用 window.onload 属性,但它抹去了 func1 的调用...

我现在只能说:

window.onload = func2(); //where func2() calls to func1()

但这看起来又脏又蹩脚?不是吗?

那么,有没有办法在即将onload执行的函数中增加一些函数,而不删除旧的呢?此外,我使用 asp.net,如果这可以帮助...

谢谢!

最佳答案

您可以使用 jQuery 链接加载处理程序。重复使用jQuery.loadjQuery(document).ready将链接您的处理程序(我相信)。您的另一个选择是以编程方式执行此操作,这意味着您需要一个辅助函数来为您链接您的 onload 处理程序。您可以使用闭包(或匿名函数)执行此操作:

var addOnLoadHandler = function(newHandler) {

if (typeof window.onload != 'function') {
window.onload = newHandler;
}

else {
var oldHandler = window.onload;
window.onload = function() {
if (oldHandler) {
oldHandler();
}
newHandler();
};
}
};

不过,您必须以编程方式绑定(bind)您的函数,因此您必须这样做:

addOnLoadHandlers(function() {
alert("Hi I am the first onLoad handler!");
});

addOnLoadHandlers(function() {
alert("Hi I am the second onLoad handler!");
});

在 javascript 文件中(或在您的 html 文件中)。

另一种方法是使用数组:

var onloaders = new Array();

function runOnLoads() {
for (i = 0; i < onloaders.length; i++) {
try {
var handler = onloaders[i];
handler();
} catch(error) {
alert(error.message);
}
}
}

function addLoader(obj) {
onloaders[onloaders.length] = obj;
}

在您的 HTML 或 Javascript 文件中:

addLoader(function() {
alert("Hi I am the first onLoad handler!");
});

addLoader(function() {
alert("Hi I am the second onLoad handler!");
});

然后在你的 html 中你可以做 <body onload="runOnLoads()">

关于asp.net - Javascript 中的 window.onload 有 += 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com