如何使用Greasemonkey在javascript中设置已创建事件的`isTrusted`属性

时间:2017-07-04 19:22:43

标签: javascript greasemonkey dom-events

我想通过Greasemonkey中的用户脚本创建并触发KeyPress事件,但我发现createEvent的isTrusted始终设置为false

isTrusted是只读属性,但我读到它可以通过像Greasemonkey这样的扩展设置为True,但它对我不起作用。

有没有办法将isTrusted设置为true

2 个答案:

答案 0 :(得分:1)

没有。你目前无法使用Greasemonkey执行此操作。在大多数情况下,Greasemonkey只运行javascript,javascript无法设置isTrusted。它会违抗the spec并击败可信事件的整个目的。

那说,理论上,a Firefox add-on should be able to spoof isTrusted,但Greasemonkey没有将该功能扩展到其用户。

a feature request to add isTrusted capability to Greasemonkey。您可以去那里并将您的声音添加到讨论中,或者您可以分享Greasemonkey代码并自行添加功能。



a related question for Google Chrome,但在该浏览器中可能无法使用欺骗isTrusted,即使是扩展程序也是如此。

答案 1 :(得分:-1)

从理论上讲,您可以使用WebSocket创建一个受信任的事件,JavaScript使用该WebSocket来与在后台运行的python脚本进行通信,并按下该键,但这是很多代码。

Python代码:

import asyncio
import websockets
import pyautogui
async def watchlist(websocket, path):
    while (1==1):
        key = await websocket.recv()
        pyautogui.press(key)

start_server = websockets.serve(watchlist, "localhost", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()



Js Code按键:

ws = new WebSocket("ws://localhost:8765")
function sendkey(key){
     ws.send(key)
}
sendkey('a')