gpt4 book ai didi

javascript - 在 Javascript 中使用 addEventHandler 的安全、通用的方法?

转载 作者:数据小太阳 更新时间:2023-10-29 05:20:39 24 4
gpt4 key购买 nike

在我进入这个问题的细节之前,我想把情况弄清楚。我们的网络分析公司作为大型网站的顾问,并且(除了添加单个 SCRIPT 标记外)我们无法控制页面本身。

我们现有的脚本使用“旧”方式(element.onclick = blah 的奇特版本;它也执行原始处理程序)安装处理程序,这完全不知道页面上的"new"(addEventListener 或 attachEvent)处理程序。我们想解决此问题,使我们的脚本能够在更多站点上运行,而无需进行太多自定义开发。

这里最初的想法是让我们自己的脚本使用 addEventListener/attachEvent,但这带来了一个问题:客户端的站点使用“旧”方式设置处理程序,它会清除我们安装的"new"处理程序方法。快速而肮脏的测试表明这种情况在 IE7 和 FF3 中都会发生,尽管我没有测试所有浏览器。还有一个风险是,如果我们在页面的事件处理程序已经设置后使用"new"方式,我们可能会删除它们的处理程序。

所以我的问题是:无论页面上其他事件处理程序的安装方式如何,我都可以使用什么安全技术在 Javascript 中使用 addEventListener/attachEvent 添加事件处理程序?

请记住:我们无法修改安装脚本的站点。 (我必须强调,因为像这样的问题的默认答案总是,“只要重写页面以相同的方式做所有事情。”)

最佳答案

你能再试一次你的快速测试吗?在 FF3 中,这不会发生在我身上。

elem.onclick = function() { alert("foo"); };
elem.addEventListener("click", function() { alert("bar"); }, false);

当我点击该元素时,两个处理程序都会为我触发。

我猜你忘记了 addEventListener 中的最后一个 bool 参数(是否使用捕获阶段)。我还猜测您忘记了 IE 的 attachEvent 需要 onclick,而不是 click

关于javascript - 在 Javascript 中使用 addEventHandler 的安全、通用的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com