Javascript 分派click事件并保留击键修改器
我想监听特定元素上的点击事件,然后将其发送到link元素,同时记住元键是否为hold 例如: 假设我有一个元素表。当用户单击一行时,我希望跟随一个链接,但如果用户有自己的链接,我希望在新选项卡中打开该链接⌘ /按下ctrl键 看起来很简单,但我发现这很棘手。。。(因为我没有成功!)Javascript 分派click事件并保留击键修改器,javascript,javascript-events,onclick,modifier-key,Javascript,Javascript Events,Onclick,Modifier Key,我想监听特定元素上的点击事件,然后将其发送到link元素,同时记住元键是否为hold 例如: 假设我有一个元素表。当用户单击一行时,我希望跟随一个链接,但如果用户有自己的链接,我希望在新选项卡中打开该链接⌘ /按下ctrl键 看起来很简单,但我发现这很棘手。。。(因为我没有成功!) 提前感谢您的帮助 DOM事件API已经提供了您所需要的一切,假设您只需要记住合法用户操作中的修改器键 使用捕获事件时,只需获取参数,即传递给处理程序函数的DOMEvent实例,然后使用以下命令将其重新发送到目标元素:
提前感谢您的帮助 DOM事件API已经提供了您所需要的一切,假设您只需要记住合法用户操作中的修改器键 使用捕获事件时,只需获取参数,即传递给处理程序函数的
DOMEvent
实例,然后使用以下命令将其重新发送到目标元素:)
实际上,DOMEvent
实例封装了它的源环境。更具体地说,a知道在发射时按下了哪些键
演示:在按住的同时尝试单击中的链接⌘ (如果不是在Mac上,则按ctrl键),例如 以下是使用的代码,供完整参考:
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
);
您可能也会发现有用的:)我已经尝试过了,但您不知道这个错误:未捕获错误:DISPATCH\u REQUEST\u ERR:DOM Events Exception 1?@NimaIzadi我只在Safari 5中测试过,它在Safari 5中工作。事实上,Chrome21抛出一个
DISPATCH\u REQUEST\u ERR
…而FF 14抛出NS\u ERROR\u非法\u值。很有趣。我正试图进行更多的调查。DISPATCH\u REQUEST\u ERR
源于事件发生的事实。我尝试了stopPropagation()
,但这并没有改变任何事情。因此,我只想到两种方法。首先是通过createEvent
和(编写起来很烦人,但可以在helper函数中)克隆事件;由于isTrusted
属性……(参见isTrusted
),这可能不会按要求在后台打开链接。不过,这应该在每个浏览器中进行测试。第二种方法也需要测试,但有点难看:添加一个超时,并在事件完成冒泡后dispatch
事件。太棒了!setTimeout可以在Webkit(Chrome 21和Safari 6)上明显工作,但不能在FF上工作。它在FF上没有任何作用。。。(既不抛出NS\u错误\u非法\u值
)