【问题标题】:How to disable the 'Open Link in New Tab' in the browser?如何在浏览器中禁用“在新选项卡中打开链接”?
【发布时间】:2011-10-23 18:51:56
【问题描述】:

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

【问题讨论】:

  • 您为什么要这样干扰您的用户浏览器?您的链接打开到哪个选项卡应该由我决定。
  • @Inuyasha 如果在新标签页中打开链接,我的应用程序当前会显示错误。它旨在将内容加载到同一页面上的 div 中。如果不是这样,那么相信我,我不想“干涉”。
  • 作为用户,我更希望从按钮而不是链接触发这种类型的功能。我希望链接能够以更标准的方式工作,包括让我选择右键单击菜单或中键单击以直接在新选项卡中打开。
  • @grainne:那么也许更好的方法是让新标签页中的打开链接工作而不是禁用它。
  • 当您单击鼠标中键或按住 CTRL 并单击链接时,这将不起作用。如何处理这些情况。

标签: javascript browser cross-browser


【解决方案1】:

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

【讨论】:

  • 鼠标中键单击或按住CTRL单击链接时不起作用,如何防止这些情况?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    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;
    }
    

    希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      2019

      我将重点介绍 2 个重要的 cmets:

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

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

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

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

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

      如果 all 符合以下条件,某些现代浏览器(如 Chrome)会将其视为链接:

      1. 这是一个&lt;a&gt;...&lt;/a&gt; 标签(不是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>
      

      重要提示:

      同样,由浏览器决定。如果 以上 3 个条件中的任何一个匹配,一些旧的/愚蠢的浏览器可能会给它链接行为!

      结论

      如果是链接,请使用&lt;a href="some_link"&gt;...&lt;/a&gt;。如果不是链接,请使用其他链接,例如 &lt;button&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 1970-01-01
        相关资源
        最近更新 更多