我只是想制作一个快速的用户脚本,以防止网站在新标签页中打开链接,因此我可以选择何时这样做。哦,小伙子。
我想使用普通的javascript;我认为这对于这么简单的任务来说已经足够了。我正在Quora进行所有测试,因为那是我决定编写那个小片段的地方。
嗯,没有用。我开始变得简单,并且由于失败而增加了我的代码的疯狂:链接保持打开无论有多少preventDefault(),返回false,阻止[*] Propagation(),eventListeners ...甚至修改dom以从其target =“_ blank”中剥离a
元素。
最后,我咬紧牙关,用这个小片段尝试了jQuery:
$("a").click(function(event){
event.preventDefault();
alert("Was preventDefault() called: " + event.isDefaultPrevented());
});
但这也没有任何好处。所以我放弃了。然后我意识到代码似乎适用于其他网站。 Quora.com除外。常规的Quora链接如下所示:
<a href="http://thewebsite.to/go"
rel="noopener nofollow"
target="_blank"
onclick="return Q.openUrl(this);"
class="external_link"
data-qt-tooltip="thewebsite.to"
data-tooltip="attached">
Link text
</a>
当然,有很多废话,但我一直在逐个删除属性,直到裸露的骨头:<a href="http://thewebsite.to/go"></a>
仍然无法正常工作。最重要的是,即使链接打开,event.isDefaultPrevented()
也会返回true!
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
您确定链接被选中了吗? 也许这有帮助:
$(document).on('click', 'a', function(e) {
e.preventDefault();
});
答案 1 :(得分:0)
问题是a标签中的onclick定义。它会在您的代码执行任何操作之前创建一个新的on click事件侦听器。
要防止它,您必须使用事件订单,请参阅上一个问题:How to order events bound with jQuery