【问题标题】:How to disable or hide the Open In New Tab option for hyperlinks [closed]如何禁用或隐藏超链接的“在新选项卡中打开”选项[关闭]
【发布时间】:2013-06-14 16:28:38
【问题描述】:

在右键菜单中的超链接上,如何删除或隐藏在新选项卡中打开在新窗口中打开选项?

例如

<a href="#" onclick="asd">foo</a>

【问题讨论】:

标签: javascript


【解决方案1】:

不确定您为什么要这样做,但可以通过将 href 移动到 data-href 属性,然后删除 href 并添加点击处理程序来完成。 onclick 将读取data-href 并重定向。

Demo

var links = document.getElementsByTagName("a");

for(var i=0; i<links.length; i++){
    links[i].setAttribute("data-href", links[i].getAttribute("href"));
    links[i].removeAttribute("href");
    links[i].onclick = function(){
        window.location = this.getAttribute("data-href");
    };
}

右键菜单显示:

【讨论】:

  • 这是最干净的选择,我同意 Mr Code 的观点
  • 我刚刚用谷歌搜索了这个。我想这样做的原因是我设置了在模态中触发 ajax 动作的链接,如果用户在新选项卡中打开它们,那么它会破坏它(因为它在新窗口中而不是模态并且没有它需要的所有上下文)。我认为关闭 href 是最好的解决方案:我需要添加一些额外的样式以使它们再次看起来像链接。
【解决方案2】:

您可以使用 javascript 链接而不是普通的 html 链接。只需执行 href="javascript:void(0)" 并处理单击事件即可重定向页面。这不会删除在另一个选项卡中打开的选项,但会确保页面在尝试时实际上不会打开。

除了 HTML 标记,您还可以使用另一个标记,例如并给它一个 cursor:pointer css 属性和 jquery onclick 以使其像链接一样工作。这将从上下文菜单中完全删除“在另一个选项卡中打开”选项。

【讨论】:

    【解决方案3】:

    您可以使用以下代码来完成。

    <script language="javascript">
    $("a").click(function(event)
    {
      if(event.button==2)
       {
         return false;    
       }
    });
    </script>
    

    【讨论】:

    • 这里的 event.button==2 是什么意思?你能解释一下我也试图阻止链接打开到新标签/窗口
    • Button 2 代表鼠标的第二次点击。
    • 谢谢你的想法,不过应该是 if(event.which==2) event.which == 1 左键点击 event.which == 2 中间滚轮点击 event.which == 3 右点击 .. 我认为 event.button ==2 用于从 jquery 右键单击​​
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2014-02-23
    相关资源
    最近更新 更多