如何使用书签删除内联 onclick 属性?

问题描述 投票:0回答:4

有一个烦人的网站,它通过使用

<div onclick=>
而不是
<a href=>
来阻止“在新选项卡中打开”的尝试。我使用 jQuery 编写了一个书签,它创建了一个包装器
<a>
标签,并将其插入到其内容周围的
<div>
中。

如何删除原来的

onclick
处理程序?

javascript jquery jquery-events bookmarklet
4个回答
5
投票

尚未提及:

$('#myId')[0].onclick = null; // remove the inline onclick() event

1
投票

未经测试,但是...

$("selector").removeAttr("onclick");

我想你已经尝试过了

$("selector").unbind("click");

1
投票

在某些情况下,将

onclick
设置为
null
不起作用,但这应该始终有效:

document.getElementById("myId").setAttribute("onclick", "");

0
投票
element.removeAttribute('onclick');

就是这样。 实际上删除了监听器。 其他方法则不然——它仍然有效。 请参阅开发工具。截图如下。

留下失效的监听器通常没什么大不了的,但如果你有很多这样的监听器,它们会浪费CPU,并且你的页面或应用程序的性能会下降

而且,它仍然像某种孤儿太监一样在你的代码中活着,这有点丑陋。

有点惊讶这个问题已经存在了近 15 年了,但从来没有一个正确的答案......尽管最后一个有正确的想法,除了“未经测试”的答案哈哈。

把这个扔在那里,因为我确信有人遇到过这个问题,试图真正回答这个问题,正确地,如果没有真正正确地回答,可能会导致问题。

消除影响并不等同于消除原因。 有时还不够。

© www.soinside.com 2019 - 2024. All rights reserved.