最近我想出了以下问题:
在我网站的所有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将链接你的处理程序(我相信).你的另一个选择是以编程方式执行,这意味着你需要一个辅助功能,它将为你链接你的负载处理程序.您可以使用闭包(或匿名函数)来执行此操作:
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()”>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。