javascript - 防止 "hijacking"将自定义功能应用于点击事件时链接点击的意图

标签 javascript usability

例如,有一些 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.ctrlKeyevent.altKeyevent.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/

相关文章:

javascript - 对跑道应用程序进行应用程序身份验证时收到 400 响应

javascript - 选择输入标签 - 在点击时选择中间日期

html - 使用 CSS 提高文本可读性

javascript - 触发 Javascript 表单字段验证和格式化的事件是什么?

javascript - 如何在 React Native 中删除某个屏幕上的底部任务栏?

java - 如何从 Java Swing 应用程序中识别监视器?

javascript - javascript - 使用 parse.com 查询和 Angular ng-repeat

javascript - 检查动态生成的复选框

javascript - 为 IndexedDB 键生成 UUID?

javascript - 在 JSF 应用程序中显示消息