我可以通过编程检查和修改HTML元素的JavaScript事件处理程序? [英] can I programmatically examine and modify Javascript event handlers on html elements?

查看:196
本文介绍了我可以通过编程检查和修改HTML元素的JavaScript事件处理程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是用C#做浏览器自动化,我想在某些网页中的HTML元素,我在看的修改或者可能只是消除事件处理程序。例如,假设有一个按钮有可能(或可能不会)有一个附加onclick事件。我怎么去:
- 找出是否有附着的onClick它的任何事件处理程序?
- 删除它们。

I am doing browser automation using C#, and I would like to modify or possibly just eliminate event handlers on some of the html elements in webpages that I am looking at. E.g., suppose there is a button there which might (or might not) have an attached onClick event. How do I go about: - finding out if there are any event handlers attached to onClick for it? - removing them?

推荐答案

有自己的克隆替换元素应有效地放弃其所有的事件侦听器(当然,技术上的听众仍然是一个因素,但因为一个元素被替换为它自己的克隆,它看起来好像听故事的人简单地删除):

Replacing element with its own clone should effectively discard all of its event listeners (well, technically listeners are still on an element, but since an element is replaced with its own clone, it looks as if listeners were simply removed):

el.parentNode.replaceChild(el.cloneNode(true), el);

不幸的是,这将无法在IE浏览器,IE浏览器,因为错误地转移在克隆元素的事件侦听器。要解决,你可以重新分配的innerHTML 元素的 parentNode

el.parentNode.innerHTML = el.parentNode.innerHTML;

请注意,这不仅将移除元素的事件监听器,也是所有元素的兄弟姐妹的听众。

Note that this will not only remove event listeners of an element, but also listeners of all of element's siblings.

另外,你可以解决IE问题通过的重新分配 outerHTML 元素的:

Alternatively, you can work around IE issue by reassigning outerHTML of an element:

el.outerHTML = el.outerHTML;

这篇关于我可以通过编程检查和修改HTML元素的JavaScript事件处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆