以下代码在Chrome / Opera中运行良好但在Firefox / IE中无效。请帮助我。
$('.class name of anchor tag').mousedown(function(e){
if(e.which==2)
{
e.preventDefault();
window.location = '';
}
});
我想在超链接上禁用鼠标中键以防止在新标签中打开页面。代码应该在FF / IE中工作。我没有捕获事件的任何问题。事件触发得很好。一旦用户点击中间按钮(即事件触发时),阻止打开链接的代码是什么。
答案 0 :(得分:2)
您可以将anchor tag
元素放在另一个元素中 - 它将充当“容器”; - 或()在其上放置另一个透明元素,并通过父/ overlay元素处理/捕获click事件。
即使上述技术是一种解决方法,它可以节省时间,如果“适当的修复”不可用,它可能是唯一的选择。这种技术在其他地方也很有用,因为点击事件处理需要更多控制。
如果你使用这种技术,使用“叠加”可以检测到:
如果点击了中键 - >忽视;别的 - >获取锚标记的 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;
};
答案 1 :(得分:1)
试试这个
$('.class name of anchor tag').on("mousedown", "selector", function (e) {
答案 2 :(得分:1)
不要使用a-tag;改为使用跨度。无需打破网络。
如果问题是:"如何防止事情按预期工作?"答案通常是 "不要这样做。"
如果您不控制来源,请将其从标记更改为范围:https://stackoverflow.com/a/13389835/474374
答案 3 :(得分:0)
$(document).on("mousedown", "selector", function (ev) {
if (ev.which == 2) {
ev.preventDefault();
alert("middle button");
return false;
}
});
答案 4 :(得分:0)
我使用以下代码解决了我的问题,虽然它不令人满意,但它的工作效果比以前更好。
$('.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 = '';
}
}
});
如果有人知道,完美的解决方案,请回复。