当CTRL+单击链接打开一个新窗口时,是否可以抑制默认的 IE 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>
。
jQuery event.preventDefault()方法或类似方法可以覆盖您可以控制的页面上的默认行为。
在没有充分理由的情况下更改用户浏览器的行为通常是不好的做法,因为浏览器及其行为是“他们的”。
与操作有相同的问题,并通过给锚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");
});
将链接文本包装在跨度内。像这样:
<a href="test.html"><span>click here!</span></a>
将脚本添加到锚点并返回 false
<a href='some.htm' onclick='return false;'></a>
在树视图中使用锚点是有效的,因为它使树视图更易于访问。
使用 jquery,您可以自己处理 ctrl+click 功能并返回 false,例如
$("a").click(function(event){
if(event.metaKey || event.ctrlKey){
//handle over here
return false;
}
});
这适用于所有浏览器,包括 mac