2

我想听一个特定元素上的点击事件,然后将它分派给一个链接元素,同时记住元键是否被保留。

例如:假设我有一个元素表。当用户点击一行时,我想关注一个链接,但如果用户有他的,我希望在新选项卡中打开链接⌘</kbd> /ctrl key pressed.

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

提前感谢您的帮助!

4

1 回答 1

1

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

addEventListener用于捕获事件时,只需将参数(一个DOMEvent实例)传递给您的处理函数,然后将其重新发送到您的目标元素dispatchEvent  :)

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


演示:尝试在按住此 JSfiddle的同时单击该链接⌘</kbd> (or ctrl if not on a Mac), for example.

对于完整的参考,这里是使用的代码:

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 事件的完整参考很有用:)

于 2012-09-16T16:22:15.677 回答