例如,有一些 JavaScript 代码有一个点击处理程序,它决定了用户应该被重定向到哪里。假设它只是一个重定向随机链接,在用户单击链接时计算。
以下是一些场景:
如果用户左键单击链接,用户的意图是将导航保留在同一个选项卡中,这与
window.location
配合得很好。如果用户中间点击此链接,对用户来说,网站似乎劫持了中间点击并简单地忽略了它,将用户重定向到同一选项卡而不是新选项卡。
另外,正如有人刚刚评论(并删除了评论?),另一种情况是修饰键也可以建议浏览器打开一个新选项卡,甚至是一个新窗口。
另一个建议是能够通过上下文菜单在新选项卡或窗口中打开链接。这不太重要,但绝对是相同的可用性问题。
我在很多网站上都看到过这个问题,尤其是对我来说,Google Analytics,几乎每次我点击鼠标中键时,都会发生这种情况。
一些 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
对象还包含属性 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;
}
});
});
来源:https://developer.mozilla.org/En/DOM/Event.button
浏览器支持:http://help.dottoro.com/ljaxplfi.php
关于javascript - 防止 "hijacking"将自定义功能应用于点击事件时链接点击的意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11751656/