Firefox 扩展生成的事件“可信”吗?

问题描述 投票:0回答:1

我的 Firefox 扩展会生成事件,例如点击。作为响应,Web 应用程序尝试打开一个新窗口。然而,当弹出窗口阻止程序启动时,它会被 Firefox 阻止。但是,如果我手动单击一个按钮并响应该按钮,当网络应用程序尝试打开窗口时,它就会通过。

我的问题是为什么我的扩展生成的事件不被视为“可信”,并且在用户点击时以相同的方式处理?是否有一些后门可以实现这种行为?

firefox firefox-addon dom-events
1个回答
7
投票

编辑:这个答案已经严重过时了。它指的是从 Firefox 57 开始不再支持的经典扩展。基于 Web 扩展 API 的扩展无法生成可信事件。 是的,扩展生成的事件始终是可信的。这意味着 event.isTrusted

将是
true

并且事件将能够触发需要可信事件的操作(例如,使用 Ctrl-Tab

keypress
事件来切换浏览器选项卡)。但是,它们仍然是合成事件,这意味着没有与它们关联的本机(操作系统级别)事件。由于弹出窗口拦截器适用于本机事件,因此它不会看到您的扩展生成的事件。
您可以使用 
nsIDOMWindowUtils.sendMouseEventToWindow()
而不是

document.createEvent()

。此方法用于测试,并且也会生成本机事件。这对于弹出窗口拦截器来说应该足够了。 var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindowUtils); utils.sendMouseEventToWindow("click", 10, 20, 0, 1, 0);

    

© www.soinside.com 2019 - 2024. All rights reserved.