【问题标题】:IE 7 CTRL + click opens a new window - how to suppress it?IE 7 CTRL + 单击打开一个新窗口 - 如何抑制它?
【发布时间】:2010-04-22 20:55:13
【问题描述】:

CTRL+点击链接打开一个新窗口时,是否可以抑制默认的 IE 7 功能?如果有,怎么做?

谢谢!

【问题讨论】:

  • 我要说的是,您需要一个很好的理由来重新定义用户期望以某种方式工作的操作。
  • 在 IE8 中可以;这也是 Firefox 和 Chrome 中的默认行为 - shift-click 打开一个新窗口,ctrl-click 打开一个新选项卡。其他人可能也一样。
  • 您需要在请求中提供更详细的信息。您的实际问题比这更广泛。

标签: internet-explorer-7 click ctrl


【解决方案1】:

没有办法抑制 Ctrl + 单击 Internet Explorer 中没有子元素的链接 - 如果 Ctrl 键被按住。 Microsoft 似乎不希望您更改此功能,因为担心您可能会混淆用户。

在发布此答案之前,我搜索了某种官方确认/解释,但不幸的是,此限制未在 MSDN 上的文档中列出,谷歌也没有帮助。尽管如此,它仍然是正确的,你自己试试吧:

<a href="#" onclick="alert('Hello');">Hello</a>

你会发现一个Ctrl+点击链接不会抛出警告框。根据pinkgothic,将子元素分配给链接将解决该问题。例如:

<a href="#" onclick="alert('Hello');"><span>Hello</span></a>

之所以有效,是因为先触发了&lt;span&gt; 元素的点击,然后再传播到&lt;a&gt; 元素。

【讨论】:

  • 是的,我已经想好了....我将采用树控件的开箱即用行为,并称之为一天
  • 有趣的是,&lt;a href="http://stackoverflow.com" onclick="alert('Hello');"&gt;&lt;span&gt;Hello&lt;/span&gt;&lt;/a&gt; 使用 ctrl+click 可以正常工作(至少在 IE9 中)。显然,事件从哪里冒出来“只”很重要。一个&lt;span&gt; 就足以把它扔掉。
  • @pinkgothic:如果它也适用于旧版本的 IE,那听起来很有希望。
  • 同意!不幸的是,我无法检查;我只是在尝试调试一个神秘地无法在 IE 中使用 ctrl+click 的网站时偶然发现了您的答案 :) 我设法修复了它(我们的案例是一个简单的 display:none 触发 onclick),所以我想我会分享我的解决方法。你的回答很有帮助! ^_^
  • @pinkgothic 建议的带有&lt;span&gt; 元素的技巧非常有效。谢谢!
【解决方案2】:

jQuery event.preventDefault() 方法或类似方法可以覆盖您可以控制的页面上的默认行为。

在没有充分理由的情况下更改用户浏览器的行为通常是不好的做法,因为浏览器及其行为是“他们的”。

【讨论】:

  • 我打算为树中的节点做。他们支持。可点击但不可打开的链接。我不会对传统链接这样做。
【解决方案3】:

与 op 有同样的问题,并通过给锚 href 属性一个 '#' 和一个带有相应链接位置的附加 data-href 属性来解决它。 缺点是您需要单击处理程序来跟踪链接,而且右键单击“在新窗口中打开”也不适用于这种方法。

eg: In AnchorTag, Use href and data-ref as:
<a id="logout" href="#" data-href="${yourPath}"> 

And in javascript, use    
$("#logout").click(function(e) {
    if(e.ctrlKey) 
e.preventDefault();
window.location = $(e.target).attr("data-href");
});

【讨论】:

    【解决方案4】:

    将链接文本包装在一个跨度内。像这样:

    <a href="test.html"><span>click here!</span></a>
    

    【讨论】:

      【解决方案5】:

      将脚本添加到锚点并返回false

      <a href='some.htm' onclick='return false;'></a>
      

      在树视图中使用锚点是有效的,因为它使树视图更易于访问。

      【讨论】:

        【解决方案6】:

        使用 jquery 你可以自己处理 ctrl+click 功能并返回 false,例如

        $("a").click(function(event){
        if(event.metaKey || event.ctrlKey){
         //handle over here 
        
        return false;
        }
        
        });
        

        这适用于所有浏览器,包括 mac

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-23
          • 1970-01-01
          • 2019-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-25
          相关资源
          最近更新 更多