我想听一个特定元素上的点击事件,然后将它分派给一个链接元素,同时记住元键是否被保留。
例如:假设我有一个元素表。当用户点击一行时,我想关注一个链接,但如果用户有他的,我希望在新选项卡中打开链接⌘</kbd> /ctrl key pressed.
看起来很简单,但我发现这很棘手......(因为我没有成功!)
提前感谢您的帮助!
我想听一个特定元素上的点击事件,然后将它分派给一个链接元素,同时记住元键是否被保留。
例如:假设我有一个元素表。当用户点击一行时,我想关注一个链接,但如果用户有他的,我希望在新选项卡中打开链接⌘</kbd> /ctrl key pressed.
看起来很简单,但我发现这很棘手......(因为我没有成功!)
提前感谢您的帮助!
假设您只需要记住合法用户操作的修饰键,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 事件的完整参考很有用:)