在将自定义功能应用于单击事件时,防止"劫持"链接单击的意图

gak*_*gak 7 javascript usability

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

以下是一些场景:

  • 如果用户左键单击链接,则用户的意图是将导航保持在同一选项卡中,这可以正常工作window.location.

  • 如果用户中间单击此链接,则向用户显示网站已劫持中间点击并忽略它,将用户重定向到同一选项卡而不是新选项卡.

  • 另外,正如有人刚刚评论过(并删除了评论?),另一种情况是修改键还可以建议浏览器打开新标签,甚至是新窗口.

  • 另一个建议是能够通过上下文菜单在新选项卡或窗口中打开链接.这不太重要,但绝对是相同的可用性问题.

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

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

处理一些数据,然后在允许用户继续访问他们点击的链接之前发送需要完成的XHR请求.

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

bPr*_*tik 2

event.button可用于识别单击了哪个鼠标按钮。\n中键返回 1。

\n\n

event对象还包含属性和event.ctrlKey,这些属性是不言自明的。它们的值是如果相应的键被按下,并且event.altKeyevent.shiftKeytruefalse否则。

\n\n
\n\n

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

\n\n

html:

\n\n
<a id="smart" href="http://www.bbc.co.uk/">Click</a>\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

js:

\n\n
$(function() {\n    $(\'#smart\').on(\'click\', function(event) {\n        if (event && event.button && event.button === 1) {\n            event.preventDefault();\n            window.open($(\'#smart\').attr(\'href\'), \'_blank\');\n            return false;\n        } else {\n            return true;\n        }\n    });\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

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

\n