我只是想制作一个快速的用户脚本,以防止网站在新标签页中打开链接,因此我可以选择何时进行操作。好家伙。

我想使用普通的javascript;我认为完成如此简单的任务就足够了。我在Quora中进行了所有测试,因为那是我决定要编写该小片段的地方。

好吧,什么都没有。我从简单开始,并根据失败而增加了代码的疯狂度:无论有多少preventDefault(),返回false,prevent [*] 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!

为什么会发生这种情况,我该如何解决?

最佳答案

您确定链接被选中了吗?
也许这样的帮助:

$(document).on('click', 'a', function(e) {
    e.preventDefault();
});

关于javascript - Event.PreventDefault()并不总是有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42504458/

10-13 01:54