如何禁用浏览器中的"在新标签页中打开链接"?

gra*_*rai 13 javascript browser cross-browser

如何禁用/删除浏览器右键菜单中的"在新标签页中打开链接"选项?如果使用javascript等无法做到这一点,那么有没有办法修改当用户点击此链接时会发生什么,例如,显示警告或阻止加载选项卡..?

Phi*_*ein 9

在新标签/窗口中打开链接的能力是许多浏览器的本机功能.如果您不希望允许此类活动,则需要通知浏览器您的链接不是真正的链接.最简单的方法是hrefa元素中删除属性.

HTML:

<a href="http://google.com">Can be opened in new tab/window</a>
<a>Cannot be opened in new tab/window</a>
Run Code Online (Sandbox Code Playgroud)

现在,当浏览器看到链接时,默认情况下可能会为您做一些其他事情.如果您尚未定义任何a元素样式,则新的奇特伪链接可能不会显示链接字体颜色,指针和下划线.你可以继续前进,轻松地做到这一点.

CSS:

a {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}
Run Code Online (Sandbox Code Playgroud)

希望能够回答如何在浏览器的右键菜单中禁用/删除"在新标签页中打开链接"选项的问题.对于一些额外的功劳,虽然我会假设您可能希望链接在点击时仍然像常规链接一样运行.随意使用一些JavaScript来实现这一目标.这是使用jQuery的一个例子:

JavaScript的:

$("body").on("click", "a[data-href]", function() {
    var href = $(this).data("href");
    if (href) {
        location.href = href;
    }
});
Run Code Online (Sandbox Code Playgroud)

修改后的Html:

<a href="http://google.com">Can be opened in new tab/window</a>
<a data-href="http://google.com">Cannot be opened in new tab/window</a>
Run Code Online (Sandbox Code Playgroud)

修改后的CSS:

a[href], a[data-href] {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


gra*_*rai 1

现在已经解决了主要问题,非常容易,因为只需将 href 的查询字符串传递给 ajax 函数即可。

我可能应该在我的问题中解释说我想要的只是作为临时措施。无论如何,感谢所有的评论。