Sun*_*wal 7 firefox firefox-addon dom-events
我的Firefox扩展程序生成事件,例如单击.作为响应,Web应用程序尝试打开一个新窗口.然而,当Popup拦截器开始时,它被Firefox阻止.但是,如果我手动点击一个按钮并在Web应用程序尝试打开窗口时响应,那么它就会通过.
我的问题是为什么我的扩展程序生成的事件不被视为"受信任",并且在用户点击时以相同的方式处理?是否有一些后门来实现这种行为?
编辑:这个答案已经过时了.它指的是Firefox 57不再支持的经典扩展.基于Web Extensions API的扩展无法生成可信事件.
是的,扩展生成的事件始终是可信的.这意味着event.isTrusted将会发生true并且事件将能够触发需要受信任事件的操作(例如,Ctrl-Tab keypress事件以切换浏览器选项卡).但是,它们保留了合成事件,这意味着没有与之关联的本机(OS级别)事件.由于弹出窗口阻止程序适用于本机事件,因此它不会看到您的扩展程序生成的事件.
您可以使用nsIDOMWindowUtils.sendMouseEventToWindow()代替document.createEvent().此方法用于测试,也将生成本机事件.对弹出窗口阻止程序来说这应该足够了.
var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindowUtils);
utils.sendMouseEventToWindow("click", 10, 20, 0, 1, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2852 次 |
| 最近记录: |