我有一个网站,有数百个已经部署的html页面。现在我想添加事件监听器,如onload和onunload在所有的HTML页面。我不想手动更改它们中的每一个,所以我在考虑是否可以动态添加这些侦听器。我的想法是编写查找body的DOM节点并将侦听器添加到此节点的JavaScript代码。可能吗? (它不一定是跨浏览器的解决方案,代码将在Firefox上运行。)动态添加事件侦听器
谢谢! 保罗
我有一个网站,有数百个已经部署的html页面。现在我想添加事件监听器,如onload和onunload在所有的HTML页面。我不想手动更改它们中的每一个,所以我在考虑是否可以动态添加这些侦听器。我的想法是编写查找body的DOM节点并将侦听器添加到此节点的JavaScript代码。可能吗? (它不一定是跨浏览器的解决方案,代码将在Firefox上运行。)动态添加事件侦听器
谢谢! 保罗
如果你想添加JavaScript,你最终会需要修改站点。
也许你会做一个全局搜索和替换,查找:
</head>
而在你的站点的根目录将其更改为
<script type="text/javascript" src="/global.js"></script>
</head>
然后创建一个名为全局文件。 js并把它放在它:
window.onload = function() {
// onload code here
}
window.onunload = function() {
// onunload code here
}
你想做什么样的事情?如果您添加了很多事件处理程序,那么对于jQuery或其他库的建议是一个很好的建议,但如果您只需要添加几块JS,也许库就是过度杀伤性的。
是的,很容易..但你打算如何获得在那里的JavaScript?如果你已经装载,可让您在你的方法挂钩的所有页面的单个JavaScript库,你可以使用
window.onload = function() {};
和
window.onunload = function() {};
..但如果你有选择,我'严重的建议使用像jQuery这样的库来隐藏你的所有这些垃圾。
Paul要求澄清。下面是示例代码:
var hi = function() {
alert('hi there.');
};
var bye = function() {
alert('bye!');
};
if(window.addEventListener) {
window.addEventListener('load', hi, false);
window.addEventListener('unload', bye, false);
} else if(window.attachEvent) {
window.attachEvent('load', hi);
window.attachEvent('unload', bye);
}
这有2个解决方案:
$ .ready =! onload导致它在onload之前被触发。顺便说一句,还有一种方法:window.addEventListener()。 –
嗯,你可以做这四件事情之一:
grep
和sed
增加做了更换,所有body.onLoad
是可能的)在firefox中添加事件的正常方法是obj.addEventListener(type,fn,false)。所以唯一要做的是:
window.addEventListener('load', yourFunction, false);
没有理由为此使用jquery。
您将不得不检查您的浏览器是否支持'addEventListener'或不。 “这个世界上的每个人都不使用Firefox”。使用if(window.addEventListener){//做FF} else if(window.attachEvent){//做IE}。 –
他正在寻找Firefox解决方案。 –
因为你只需要这在Firefox中工作,DOMContentLoaded
事件(这意味着HTML被加载,不包括图像),应听取
document.addEventListener("DOMContentLoaded", function() {
// your code here; document.body is available
}, false);
+1 for
–Thanks Artlung。我只需要添加几个听众,你的建议可以帮助所有人! – Paul
是的,我认为window.onload和window.onunload可以完成这项工作。 – SHA2NK