Javascript 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开?
以下代码在Chrome/Opera中运行良好,但在Firefox/IE中不起作用。请帮助我Javascript 如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开?,javascript,html,Javascript,Html,以下代码在Chrome/Opera中运行良好,但在Firefox/IE中不起作用。请帮助我 $('.class name of anchor tag').mousedown(function(e){ if(e.which==2) { e.preventDefault(); window.location = ''; } }); 我想在超链接上禁用鼠标中键,以防止在新选项卡中打开页面。代码应在FF/IE中工作。我在捕获事件方面没有任何问题。事件触发
$('.class name of anchor tag').mousedown(function(e){
if(e.which==2)
{
e.preventDefault();
window.location = '';
}
});
我想在超链接上禁用鼠标中键,以防止在新选项卡中打开页面。代码应在FF/IE中工作。我在捕获事件方面没有任何问题。事件触发良好。当用户单击中间按钮(即事件触发时)时,有什么代码可以防止打开链接。试试这个
$('.class name of anchor tag').on("mousedown", "selector", function (e) {
您可以将
锚定标记
元素放置在另一个元素中,该元素将充当“容器”-或者(和)在其上放置另一个透明元素,并通过父/覆盖元素处理/捕获单击事件
更新:
尽管上述技术是一种变通方法,但它可以节省时间,如果“适当的修复”不可用,它可能是唯一的选择。这种技术在其他地方也很有用,因为点击事件处理需要更多的控制
如果应用此技术,使用“覆盖”可以检测:
如果单击了中间按钮->忽略;else->获取锚定标记的href
值,并使用如下内容进行相应导航:
overlay.onclick = function(event)
{
event = (event || window.event);
if (event.which == 2 || event.button == 4 )
{ return; }
window.location.href = this.parentNode.getElementsByTagName('a')[0].href;
};
我用下面的代码解决了我的问题,虽然它不令人满意,但它比以前的代码工作得更好
$('.accordion-toggle').mousedown(function(e){
if(e.which===2) {
if(/Firefox|MSIE |Trident/i.test(navigator.userAgent)) {
e.stopPropagation();
e.preventDefault();
window.location = 'index';
return false;
}
else
{
e.preventDefault();
window.location = '';
}
}
});
如果有人知道完美的解决方案,请回复。不要使用a标签;改用跨距。没有必要破坏网络 如果问题是:“我如何防止事情按预期进行?”答案通常是“不要这样做。”
如果您无法控制源代码,请将其从a标记更改为span:尝试使用===intead of==。以下是您的问题@LightnessRacesinOrbit的答案OP无法正确陈述他的问题,但我仍然认为他的问题没有得到回答。鼠标中键单击事件触发一个javascript事件,并具有默认行为。该事件在所有浏览器中都被成功调用,但即使在事件上调用
preventDefault
,在某些浏览器中也无法阻止它。我不知道您将在什么具体情况下使用它,但总体而言,这似乎是一个非常糟糕的设计。如果它是一个链接,它应该像一个链接一样,包括默认的鼠标中键单击行为。如果不是,不要使用标签。我以前见过页面这样做,像@SF,我真的不喜欢那样。@SwR:本质上,你破坏了浏览器良好的本机功能。通常,如果我想在转到新页面时引用上一页,我会通过中键单击在新选项卡中打开新页面。顺便说一句:你在“新”选项卡中右键单击打开帐户了吗?如果您这样做了,您是否解释了处理该问题的RightToClick扩展?您是否考虑过“用鼠标右键在链接上方拖动”鼠标手势在MozGest扩展中的新选项卡中打开链接?点击链接并按下键盘上的菜单按钮?你正在与风车展开一场艰苦的战斗。这是有原因的,而像你建议的那样创造一个变通办法并不能解决或解决实际问题issue@zerohero::嘿,这是IE:P,并且版本没有指定,至少我提供了一种技术,它肯定会起作用。。请取消否决票。。我是说。。没什么好说的,要么我就得应付每一个可能成为问题的未指明的问题cause@SwR::谢谢,这很有用,(关于IE 11),我也相应地对你的评论投了赞成票。如果你觉得我的答案至少有用,请投赞成票谢谢,我想在超链接上禁用鼠标中键,以防止在新选项卡中打开页面。代码应该在FF/IE中工作。我在捕获事件方面没有任何问题。事件触发得很好。当用户点击中间按钮(即事件触发时)时,有什么代码可以防止打开链接。仅仅因为他没有说明ie版本并不意味着9版的ie与10、11等版本的ie不同。这就是ie的原因,他们从不修复他们的垃圾;)
$('.accordion-toggle').mousedown(function(e){
if(e.which===2) {
if(/Firefox|MSIE |Trident/i.test(navigator.userAgent)) {
e.stopPropagation();
e.preventDefault();
window.location = 'index';
return false;
}
else
{
e.preventDefault();
window.location = '';
}
}
});