1

有没有办法从 html 标签中删除所有 javascript 事件?

例如

<img src=" " onclick="" />
<img src=" " onerror="" />

我想从这些标签中去除 onclick 和 onerror 。如示例中所示,我想从 html 标记中删除所有 javascript 事件。

4

5 回答 5

2

您可以这样做来清除事件:

// 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;
}

getElementsByTagName()这里的文档

更新 1 - 文档上的所有元素

如果要获取文档上的所有元素,请使用document.getElementsByTagName('*')

更新 2 - 所有事件

要清除所有事件,请查看此答案

于 2012-10-18T09:38:57.733 回答
0

您可以查看 jquery .unbind()

参考:http ://api.jquery.com/unbind/

当您需要使用事件处理程序时,它也很容易放回.bind()

于 2012-10-18T09:38:40.213 回答
0

通过使用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');
于 2012-10-18T09:47:28.980 回答
-1

在 document.onload 事件中尝试这个 javascript(未经测试):

var all = document.getElementsByTagName('*');
for (var i = 0; i < all.length; i++) {
    all[i].onclick = undefined;
    all[i].onerror = undefined;
}
于 2012-10-18T09:40:55.580 回答
-1

如果您的意思是“删除”,就像从页面源中物理删除它们一样,您可能可以使用正则表达式来获取其中的大部分,用on(\w+?)="(.*?)"空白字符串替换模式。(我没有测试,可能需要调整)

如果您的意思是“删除”,就像通过解除绑定从逻辑上删除它们一样,您可以使用 jQuery 中的 unbind() 方法,或者将每个事件设置为通过 DOM 循环的空值。

于 2012-10-18T09:45:52.633 回答