我在网上找到了很多关于如何使用的信息initEvent
and dispatchEvent功能 https://developer.mozilla.org/en-US/docs/DOM/element.dispatchEvent,但我一生都无法让它们在实践中发挥作用。
I'm trying to get a script to press the Enter key every 5 seconds. My userscript code (minus irrelevant metadata) is below:
// ==UserScript==
// @namespace http://userscripts.org/scripts/show/153134
// @require https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js
//
// @grant unsafeWindow
//
// ==/UserScript==
$(function(){
window.setInterval(function(){
var ev = document.createEvent("KeyboardEvent");
ev.initKeyEvent("keypress", true, false, window, 0, 0, 0, 0, 13, 13);
window.dispatchEvent(evt);
}, 5000);
});
在用户脚本上检查我的脚本,看看它的工作效果有多差(添加一个用户包含域并在任何<textarea>
)。是 Greasemonkey 不让其通过,还是我需要做一些不同的事情?
该代码中存在复制粘贴错误。
不要使用window.dispatchEvent(evt);
;
use window.dispatchEvent(ev);
将事件发送至window
可能也不是您所需要的。 (或者也可能是。链接到目标页面。)
也许将事件发送到文档:
document.body.dispatchEvent(ev);
或者将其发送到特定节点:
var targetNode = document.querySelector ("#content textarea"); // Etc.
targetNode.dispatchEvent (ev);
或者,由于您使用的是 jQuery:
var ev = $.Event('keypress');
ev.which = 13; // Carriage-return (Enter)
$('body').trigger(ev);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)