以下代码在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').on("mousedown", "selector", function (e) {
您可以将anchor tag
元素放置在另一个元素中,该元素将充当"容器"-或者(和)在其上放置另一个透明元素,并通过父元素/覆盖元素来处理/捕获点击事件。
更新:
尽管上述技术是一种变通方法,但它可以节省时间,如果无法获得"适当的修复",它可能是唯一的选择。这种技术在其他地方也很有用,因为点击事件处理需要更多的控制。
如果你真的应用了这种技术,使用"叠加"你可以检测到:
如果单击中间按钮,则忽略;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;
};
$(document).on("mousedown", "selector", function (ev) {
if (ev.which == 2) {
ev.preventDefault();
alert("middle button");
return false;
}
});
我使用以下代码解决了我的问题,尽管它不令人满意,但它的工作效果比以前更好。
$('.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标记;请改用跨度。无需破坏网络。
如果问题是:"我如何防止事情按预期进行?"答案是通常"不要那样做。"
如果不控制源,请将其从标记更改为跨度:https://stackoverflow.com/a/13389835/474374