3

CTRL+单击链接打开一个新窗口时,是否可以抑制默认的 IE 7 功能?如果是这样,如何?

谢谢!

4

6 回答 6

7

无法在 Internet Explorer 中禁止Ctrl+ 单击没有子元素的链接 -如果按住onclick该键,则根本不会触发链接单击事件。CtrlMicrosoft 似乎不希望您更改此功能,因为担心您可能会混淆用户。

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

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

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

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

<span>这是有效的,因为在传播到元素之前首先触发了元素的点击<a>

于 2010-04-22T21:24:43.640 回答
1

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

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

于 2010-04-22T20:59:42.487 回答
1

与操作有相同的问题,并通过给锚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");
});
于 2011-10-21T12:54:35.300 回答
1

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

<a href="test.html"><span>click here!</span></a>
于 2014-02-04T10:01:13.303 回答
0

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

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

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

于 2010-04-22T21:16:59.620 回答
0

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

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

return false;
}

});

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

于 2011-05-16T05:17:36.647 回答