在我深入了解这个问题的细节之前,我想让情况清楚.我们的网站分析公司是大型网站的顾问,除了添加单个SCRIPT标签外,我们无法控制网页本身.
我们现有的脚本使用"旧"方式安装处理程序(element.onclick = blah的花哨版本;它也执行原始处理程序),它完全不知道页面上的"new"(addEventListener或attachEvent)处理程序.我们想解决这个问题,使我们的脚本能够在更多站点上运行,而无需进行太多的自定义开发.
这里最初的想法是让我们自己的脚本使用addEventListener/attachEvent,但是这会产生一个问题:客户端站点使用"旧"方式设置处理程序,它会消灭我们安装"新"方式的处理程序.快速而肮脏的测试表明,这种情况在IE7和FF3中都会发生,尽管我没有测试整个浏览器范围.还有一种风险是,如果我们在页面的事件处理程序设置之后使用"新"方式,我们可以删除它们的处理程序.
所以我的问题是:我可以使用什么安全技术在Javascript中使用addEventListener/attachEvent添加事件处理程序,无论页面上的其他事件处理程序如何安装,它都能正常工作?
请记住:我们无法修改安装脚本的站点.(我必须强调,因为像这样的问题的默认答案总是如此,"只需重写页面以同样的方式完成所有事情.")