我想监听特定元素上的点击事件,然后将其发送到链接元素,同时记住元键是否被保留。
例如:
假设我有一个元素表。当用户点击一行时,我想关注一个链接,但如果用户按下了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事件的完整参考资料非常有用 :)