有没有办法从 html 标签中删除所有 javascript 事件?
例如
<img src=" " onclick="" />
<img src=" " onerror="" />
我想从这些标签中去除 onclick 和 onerror 。如示例中所示,我想从 html 标记中删除所有 javascript 事件。
有没有办法从 html 标签中删除所有 javascript 事件?
例如
<img src=" " onclick="" />
<img src=" " onerror="" />
我想从这些标签中去除 onclick 和 onerror 。如示例中所示,我想从 html 标记中删除所有 javascript 事件。
您可以这样做来清除事件:
// get all img elements
var imgElements = document.getElementsByTagName('img');
// loop elements
for (var i = 0; i < imgelements.length; i++) {
// clear handler
imgElements[i].onclick = null;
// add other handlers here
// imgElements[i].<here> = null;
}
更新 1 - 文档上的所有元素
如果要获取文档上的所有元素,请使用document.getElementsByTagName('*')
更新 2 - 所有事件
要清除所有事件,请查看此答案
通过使用jQuery:
$('*').each(function(){
if ($(this).is('img')) {
$(this).unbind('click');
}
});
如果您只想删除特定功能 onclick 事件,您可以这样做..
$(this).unbind('click', FunctionName);
从jQuery 1.7开始,您还可以$.on() and $.off()
用于事件绑定,因此要取消绑定 click 事件,您可以使用更简单、更整洁的方法:
$(this).off('click');
在 document.onload 事件中尝试这个 javascript(未经测试):
var all = document.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
all[i].onclick = undefined;
all[i].onerror = undefined;
}
如果您的意思是“删除”,就像从页面源中物理删除它们一样,您可能可以使用正则表达式来获取其中的大部分,用on(\w+?)="(.*?)"
空白字符串替换模式。(我没有测试,可能需要调整)
如果您的意思是“删除”,就像通过解除绑定从逻辑上删除它们一样,您可以使用 jQuery 中的 unbind() 方法,或者将每个事件设置为通过 DOM 循环的空值。