分派点击事件并保留击键修饰符



我想监听特定元素上的点击事件,然后将其发送到链接元素,同时记住元键是否被保留。

例如:
假设我有一个元素表。当用户点击一行时,我想关注一个链接,但如果用户按下了ctrl键,我希望在新的选项卡中打开该链接。

这看起来很简单,但我发现这很棘手。。。(因为我没有成功!)

DOM Event API已经提供了您所需要的一切,假设您只需要记住合法用户操作中的修饰符键。

使用addEventListener捕获事件时,只需获取传递给处理程序函数的参数(即DOMEvent实例),然后使用dispatchEvent nbsp;:)

实际上,DOMEvent实例封装了它的源环境。更具体地说,MouseEvent知道它被触发时按下了哪些键。


演示:例如,在按住(如果不是在Mac上,则为ctrl)的同时,尝试单击此JSfiddle中的链接。

为了获得完整的参考,这里是使用的代码:

var button = document.getElementById('source'),
    target = document.getElementById('target');
function handler(evt) {
    target.dispatchEvent(evt); // that's all the magic it takes
}
button.addEventListener(
    'click', // listen to a click event
    handler,
    false // no capture, i.e. do not catch events before children
);​

您可能还发现这篇关于DOM事件的完整参考资料非常有用 :)

最新更新