IE 7 CTRL +点击打开一个新窗口 - 如何抑制它?
有没有办法抑制按Ctrl +与点击Internet Explorer中没有子元素的链接 - 如果按Ctrl键被按下后,onclick
不会触发事件在所有的链接点击。看起来微软不希望你改变这个功能,因为担心你可能会混淆用户。
在发布此答案之前,我搜索了某种官方确认/解释,但不幸的是,这个限制没有在MSDN上的文档中列出,Google也没有帮助。尽管如此,它仍然是正确的,自己尝试一下:
<a href="#" onclick="alert('Hello');">Hello</a>
你会发现,一个按Ctrl +点击链接不会抛出警告框。根据pinkgothic,分配一个子元素到链接将解决这个问题。例如:
<a href="#" onclick="alert('Hello');"><span>Hello</span></a>
这工作,因为点击触发的<span>
元件首先,传播到<a>
元素之前。
是的,我已经计算好了......我将用树控件的开箱行为并将其称为一天 – sarsnake 2010-04-22 22:36:33
有趣的是,'ctrl + click'的'Hello'工作正常(至少在IE9中)。显然这只是'事件发生的起点。一个''就足以让它失去。 – pinkgothic 2012-06-02 12:12:29
@pinkgothic:这听起来很有希望,如果它也适用于旧版本的IE。 – 2012-06-02 13:59:27
jQuery event.preventDefault()方法或类似方法可以覆盖您控制的页面上的默认行为。
因为浏览器及其行为是“他们的”行为,所以改变用户浏览器的行为通常是不好的做法。
我打算在树中的节点上做。他们是supp。可点击但不打开链接。我不打算为传统链接做这件事。 – sarsnake 2010-04-22 21:02:58
添加脚本到锚并返回false
<a href='some.htm' onclick='return false;'></a>
而且它是有效的TreeView中使用的锚,因为它使树形更容易获得。
使用jQuery您可以处理CTRL +点击自己的功能和返回false,例如
$("a").click(function(event){
if(event.metaKey || event.ctrlKey){
//handle over here
return false;
}
});
这个作品在所有浏览器包括Mac
有同样的问题,因为运算和解决它通过赋予锚点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>
我要说的是,您需要一个非常好的理由来重新定义用户期望以某种方式工作的操作。 – 2010-04-22 20:58:43
并不打开一个新的TAB – Midhat 2010-04-22 20:59:51
它在IE8中;这也是Firefox和Chrome的默认行为 - shift-click打开一个新窗口,ctrl-click打开一个新选项卡。其他人可能也是如此。 – GalacticCowboy 2010-04-22 21:01:29