[英]call javascript window.onload after SelectedIndexChanged event fire
[英]Is there += for window.onload in Javascript?
最近我想出了以下问题:
在我所有html页面的网站中,我在body onLoad事件中调用了一个函数:
<body onLoad="func1();">
这是我的html模板的一部分,因此它出现在我网站的每个页面上,我无法改变它。 现在,交易是在某些页面上,我需要调用一些其他函数onload,我尝试使用window.onload属性,但它擦除了func1的调用...
我现在可以说:
window.onload = func2(); //where func2() calls to func1()
但这看起来很脏又蹩脚? 不是吗?
那么,有没有办法将一些函数添加到即将执行onload的那些函数而不删除旧函数? 另外我使用asp.net,如果这可以帮助...
谢谢!
您可以使用jQuery链接加载处理程序。 反复使用jQuery.load
或jQuery(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();
};
}
};
您必须以编程方式绑定您的函数,因此您必须这样做:
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()">
您可能希望充分利用匿名函数:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}
借鉴了有史以来十大自定义JavaScript功能 。
jQuery有一个很好的简写,用于向“ready”事件添加多个定义的处理程序(不能使用匿名函数,你必须使用$(document).ready(function(){});)。
只是
$(myFunction);
$(myFunction2);
一个很大的优点是,如果DOM已经加载,这仍然会被触发,而事件之后绑定到window.onload的任何内容都不会被调用。
你有没有考虑像jquery这样的javascript库,我知道还有其他的方法,但jquery会让你的生活变得如此简单......
$(function(){
//Do stuff when DOM is loaded.
func1();
$('#link').click(function(){
//bind a click event
});
});
经典的方法是将所有功能都放在页面底部:)
在jquery你可以做到
$(document).onload(function() {
// do something
}
//然后再做
$(document).onload(function() {
// do something here too!
}
jQuery将智能地将两个事件添加到onload事件中,并且两者都将在页面加载时执行。 使用jQuery,您还可以获得crossbrowser支持作为额外奖励。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.