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

17

如何禁用/删除浏览器右键菜单中的“在新标签页中打开链接”选项? 如果无法使用JavaScript等进行此操作,则是否有一种方法可以修改用户单击此链接时发生的内容,例如显示警报或防止标签页加载...?


7
你为什么想要这样干预用户的浏览器呢?应该由我决定你的链接打开哪个标签页。 - user47589
2
@Inuyasha 我的应用程序当前在新标签页中打开链接时会显示错误。它被设计为将内容加载到同一页的 div 中。如果不是这种情况,相信我我不想“干扰”。 - questioner
4
身为用户,我更愿意通过按钮来触发这种功能,而不是通过链接。我期望链接能够以更标准的方式工作,包括让我有右键菜单的选项或者使用中键直接在新标签页中打开。 - nnnnnn
1
@grainne:也许更好的方法是使打开链接在新标签页中工作,而不是禁用它。 - icktoofay
1
当您使用鼠标中键单击或按住CTRL并单击链接时,此方法将无效。如何解决这些情况? - Pars
显示剩余2条评论
4个回答


2

2019

我想强调两个重要的评论:

  1. nnnnnn @ Aug 10 '11 at 5:49 :

    作为用户,我更希望这种类型的功能是通过按钮触发而不是链接。我希望链接以一种更标准的方式工作,包括提供右键单击菜单或使用中键直接在新标签页中打开的选项。

  2. Pars @ Dec 21 '13 at 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>

注:原始答案翻译成“最初的回答”

1

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

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


0

我不确定为什么会有人downvote你的问题,你需要搜索的是如何使用JavaScript劫持事件。当你点击一个链接时,你可以很好地显示一个警报并阻止它工作。jQuery是一个流行的JS工具包,它有一种方法可以停止元素上的默认事件,用简单的英语来说,使用jQuery可以阻止超链接工作并显示警报。这个链接 http://api.jquery.com/event.preventDefault/ 可以帮助你进一步了解。关于禁用右键单击网页上出现的上下文菜单,是完全可能的。我不是JS忍者,所以不能评论是否可以从上下文菜单中删除项目,但在我看来,这应该是不可能的。


2
当您使用鼠标中键单击或按住CTRL并单击链接时,此方法将无效。如何防止这些情况发生? - Pars

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接