javascript – 在将自定义功能应用于点击事件时,防止“劫持”链接点击的意图

例如,有一些 JavaScript代码一个单击处理程序,用于确定用户应该重定向到的位置.假设它只是一个用户点击链接时计算的重定向随机链接.

以下是一些场景:

>如果用户左键单击链接,则用户的意图是将导航保留在同一选项卡中,这与window.location一起正常工作.
>如果用户中间单击此链接,则向用户显示网站已劫持中间点击并忽略它,将用户重定向到同一选项卡而不是新选项卡.
>另外,正如有人刚刚评论过(并删除评论?),另一种情况是修改键还可以建议浏览器打开新标签,甚至是新窗口.
>另一个建议是能够通过上下文菜单在新选项卡或窗口中打开链接.这不太重要,但绝对是相同的可用性问题.

我在许多网站上看到过这个问题,特别是对我来说,谷歌分析,几乎每次我点击中间,这种效果都会发生.

一些JavaScript代码需要的一个很好的例子:

Process some data,then send off a XHR request that needs to be
completed before allowing the user to continue to the link they
clicked on.

你怎么解决这个问题?例如有没有办法检测用户是否期望链接出现在新标签中,如果是,是否可以加载新标签?也许我正在考虑这个错误方法

解决方法

event.button可用于标识单击了哪个鼠标按钮.
中间按钮返回1.

事件对象还包含属性event.ctrlKey,event.altKey和event.shiftKey,它们是不言自明的.如果按下相应的键,则它们的值为true,否则为false.

您希望实现的行为:http://jsfiddle.net/pratik136/nCdhv/9/

HTML:

<a id="smart" href="http://www.bbc.co.uk/">Click</a>​

JS:

$(function() {
    $('#smart').on('click',function(event) {
        if (event && event.button && event.button === 1) {
            event.preventDefault();
            window.open($('#smart').attr('href'),'_blank');
            return false;
        } else {
            return true;
        }
    });
});​

src:https://developer.mozilla.org/En/DOM/Event.button
浏览器支持http://help.dottoro.com/ljaxplfi.php

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面