我不知道如何使用addEventListener
分别attachEvent
正确?
window.onload = function (myFunc1) { /* do something */ }
function myFunc2() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) {
window.attachEvent('onload', myFunc2);
}
// ...
Run Code Online (Sandbox Code Playgroud)
要么
function myFunc1() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc1, false);
} else if (window.attachEvent) {
window.attachEvent('onload', myFunc1);
}
function myFunc2() { /* do something */ }
if (window.addEventListener) {
window.addEventListener('load', myFunc2, false);
} else if (window.attachEvent) …
Run Code Online (Sandbox Code Playgroud) 我想知道常规的全家JS开发人员(我)定义的函数,以及预定义的DOM方法.就像我试图attachEvent
用WHATWG的签名调用IE一样会发生什么addEventListener
?例如,
elem.attachEvent('onbillgates\'mom', function(e){ this.mount(); }, false);
具体来说,请注意false
.即使attachEvent
方法的签名只需要两个参数,它会绊倒吗?
谢谢.
function foo(FirstOf2, SecondOf2) {
console.log(FirstOf2 + SecondOf2);
}
foo(1, 2, true);
Run Code Online (Sandbox Code Playgroud) 在我深入了解这个问题的细节之前,我想让情况清楚.我们的网站分析公司是大型网站的顾问,除了添加单个SCRIPT标签外,我们无法控制网页本身.
我们现有的脚本使用"旧"方式安装处理程序(element.onclick = blah的花哨版本;它也执行原始处理程序),它完全不知道页面上的"new"(addEventListener或attachEvent)处理程序.我们想解决这个问题,使我们的脚本能够在更多站点上运行,而无需进行太多的自定义开发.
这里最初的想法是让我们自己的脚本使用addEventListener/attachEvent,但是这会产生一个问题:客户端站点使用"旧"方式设置处理程序,它会消灭我们安装"新"方式的处理程序.快速而肮脏的测试表明,这种情况在IE7和FF3中都会发生,尽管我没有测试整个浏览器范围.还有一种风险是,如果我们在页面的事件处理程序设置之后使用"新"方式,我们可以删除它们的处理程序.
所以我的问题是:我可以使用什么安全技术在Javascript中使用addEventListener/attachEvent添加事件处理程序,无论页面上的其他事件处理程序如何安装,它都能正常工作?
请记住:我们无法修改安装脚本的站点.(我必须强调,因为像这样的问题的默认答案总是如此,"只需重写页面以同样的方式完成所有事情.")
我在页面中附加了一个现有的div.附加文本包含字符串中的html代码.问题是,当我在追加到页面后添加点击它们时,事件不起作用.我猜Jquery在页面加载时加载控件,我必须做一些事情来再次攻击事件.