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

时间:2011-08-10 05:12:17

标签: javascript browser cross-browser

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

4 个答案:

答案 0 :(得分:8)

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

<强> HTML:

<a href="http://google.com">Can be opened in new tab/window</a>
<a>Cannot be opened in new tab/window</a>

现在,浏览器在看到链接时默认为您做了一些其他事情。如果您尚未定义任何a元素的样式,则新的花式伪链接可能不会显示链接字体颜色,指针和下划线。你可以继续这么做,这很容易。

<强> CSS:

a {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}

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

<强> JavaScript的:

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

修改后的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>

修改后的CSS:

a[href], a[data-href] {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}

希望这有帮助!

答案 1 :(得分:2)

现在已经解决了主要问题,很简单,只需将href的查询字符串传递给ajax函数即可。

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

答案 2 :(得分:0)

我不确定为什么有人会贬低你的问题,你需要谷歌是如何使用javascript劫持事件。单击链接并停止工作时,您可以很好地显示警报。 jQuery是一个populat JS工具包,并且有一个方法来停止元素上的默认事件,用简单的英语,使用jQuery你可以阻止超链接工作并显示警报。此链接http://api.jquery.com/event.preventDefault/可以为您提供进一步的帮助。关于禁用右键单击网页上显示的上下文菜单,是的,这是非常可能的。我不是JS忍者,所以如果你可以从上下文菜单中移除一个项目但IMO不能发表评论,那就不可能了。

答案 3 :(得分:0)

2019

我将重点介绍2条重要评论:

  1. nnnnnn @ 2011年8月10日5:49:

      

    作为用户,我希望从   按钮而不是链接。我希望链接能以更标准的方式工作   包括给我选择右键单击菜单或   单击鼠标中键可直接在新选项卡中打开。

  2. Pars @ 13年12月21日,13:10:

      

    当您通过鼠标中键单击或按住CTRL和   单击一个链接。如何处理这些情况。

由浏览器决定是否获得链接行为。

如果满足以下条件的所有所有条件,则某些现代浏览器(例如Chrome)会认为它是链接:

  1. 这是一个<a>...</a>标记(不是spandivbutton等)。
  2. 它具有href属性。
  3. href属性不为空。

下面的将获得链接行为:

<a href="http://www.website.com">Click Here</a>

下面的将不会获得链接行为:

<a>Not link because no href</a>
<a href="">Not link because empty href</a>
<span>Not link because not "a" tag</span>
<span href="http://www.website.com">Not link because not "a" tag again</span>

重要提示:

再次, 由浏览器决定 。如果上述三个条件中的 任何一个都匹配,则某些旧的/愚蠢的浏览器可能会给出链接行为!

结论

如果是链接,请使用<a href="some_link">...</a>。如果不是链接,则使用其他名称,例如<button>