如何禁用鼠标中键单击超链接以在新选项卡或新窗口中打开
How to disable mouse middle button click on hyperlink to open in a new tab or new window?
以下代码在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
相关文章:
- GWT获取新旧窗口大小
- 如何在新标签/窗口中编写文本文档
- 如何在鼠标悬停在另一个图像/链接上时显示新图像/窗口
- 从服务器 c# 打开 Outlook 新邮件窗口
- 获取用户输入以设置新的窗口参数
- 为什么我不能创建新的窗口实例
- 在c中按下一个按钮,打开两个新的窗口/选项卡(不同的外部站点)
- 在新浏览器/窗口上单击提交按钮后打开PHP操作
- 如何恢复窗口,而不是打开一个新的窗口,如果它有相同的url(仍然从上一个打开)
- 如何在不制作另一个新选项卡或新浏览器窗口的情况下在同一网页中播放MPG视频/音频文件
- 如何打开一个新的窗口/选项卡没有用户的干预,而不让它被阻止
- 打开所有链接不是我的网站的一部分,在新的窗口与jquery
- 打开一个新的窗口,而浏览器没有给出警告,这是一个弹出
- 在新的窗口jquery功能不工作
- 如何使图标出现在一个新的窗口
- 如何重定向到一个新的窗口后,点击选择关于html的选项
- 如何强制电子邮件链接打开在新的窗口
- 显示更多的信息悬停在一个新的窗口,如在facebook
- 如何使用谷歌签名与重定向,而不是一个新的窗口
- 在新的窗口打开页面,没有弹出阻止使用JavaScript目标_blank