bla*_*rat 6 javascript events dom attachevent
在我深入了解这个问题的细节之前,我想让情况清楚.我们的网站分析公司是大型网站的顾问,除了添加单个SCRIPT标签外,我们无法控制网页本身.
我们现有的脚本使用"旧"方式安装处理程序(element.onclick = blah的花哨版本;它也执行原始处理程序),它完全不知道页面上的"new"(addEventListener或attachEvent)处理程序.我们想解决这个问题,使我们的脚本能够在更多站点上运行,而无需进行太多的自定义开发.
这里最初的想法是让我们自己的脚本使用addEventListener/attachEvent,但是这会产生一个问题:客户端站点使用"旧"方式设置处理程序,它会消灭我们安装"新"方式的处理程序.快速而肮脏的测试表明,这种情况在IE7和FF3中都会发生,尽管我没有测试整个浏览器范围.还有一种风险是,如果我们在页面的事件处理程序设置之后使用"新"方式,我们可以删除它们的处理程序.
所以我的问题是:我可以使用什么安全技术在Javascript中使用addEventListener/attachEvent添加事件处理程序,无论页面上的其他事件处理程序如何安装,它都能正常工作?
请记住:我们无法修改安装脚本的站点.(我必须强调,因为像这样的问题的默认答案总是如此,"只需重写页面以同样的方式完成所有事情.")
你能再次尝试快速和肮脏的测试吗?这在FF3中不会发生在我身上.
elem.onclick = function() { alert("foo"); };
elem.addEventListener("click", function() { alert("bar"); }, false);
Run Code Online (Sandbox Code Playgroud)
当我点击元素时,两个处理程序都会向我发射.
我猜你忘了最后的布尔参数addEventListener(是否使用捕获阶段).我也猜你忘记了IE的attachEvent需求onclick,而不是click.
| 归档时间: |
|
| 查看次数: |
6609 次 |
| 最近记录: |