[英]Trigger keyboard event with greasemonkey or tampermonkey
我创建了一个用户脚本,用于定期从Google Chrome浏览器中删除历史记录。 我能想到的最简单的方法是安装“ Clear Cache
https://chrome.google.com/webstore/detail/clear-cache/cppjkneekbjaeellbfkmgnhonkkjfpdn?hl=zh-CN ,该工具可让您配置用于删除历史记录的键盘快捷键。 我设置的快捷键是alt+9
这是我打开所需网页时用于触发alt+9
事件的代码。
var event = document.createEvent('Event');
event.initEvent('keydown', true, true);
event.keyCode = 18&&57;
document.body.dispatchEvent(event);
当我访问目标网站时历史不会被清除,我不确定为什么。 我调度的事件与按alt+9
吗? 手动按alt+9
,快捷键确实起作用。
编辑:也尝试过
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js
// @grant GM_info
var press = jQuery.Event("keypress");
press.altKey = true;
press.which = 57;
$("whatever").trigger(press);
function GM_main ($) {
//alert ('jQuery is installed with no conflicts! The version is: ' + $.fn.jquery);
}
if (typeof jQuery === "function") {
console.log ("Running with local copy of jQuery!");
GM_main (jQuery);
}
else {
console.log ("fetching jQuery from some 3rd-party server.");
add_jQuery (GM_main, "2.2.2");
}
function add_jQuery (callbackFn, jqVersion) {
var jqVersion = jqVersion || "2.2.2";
var D = document;
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
var scriptNode = D.createElement ('script');
scriptNode.src = 'http://ajax.googleapis.com/ajax/libs/jquery/'
+ jqVersion
+ '/jquery.min.js'
;
scriptNode.addEventListener ("load", function () {
var scriptNode = D.createElement ("script");
scriptNode.textContent =
'var gm_jQuery = jQuery.noConflict (true);\n'
+ '(' + callbackFn.toString () + ')(gm_jQuery);'
;
targ.appendChild (scriptNode);
}, false);
targ.appendChild (scriptNode);
}
event.keyCode = 18&&57;
不工作。 这是一个逻辑/布尔运算,实际上结果为57,因为18的计算结果为true,因此分配了第二个操作数。
同样,二进制运算18&57
将不表示alt+9
。 要在按住alt键的同时模拟keydown 9
,您必须输入57的keycode
并将alt- keycode
设置为true。
var event = new KeyboardEvent();
event.keyCode = 57;
event.which = 57;
event.altKey = true;
event.ctrlKey = false;
event.shiftKey= false;
event.target = window;
window.dispatchEvent(event);
这样做可以操纵Web应用程序,但是,您不能访问浏览器功能,因为任何网站都可以这样做,这意味着很高的安全风险。
用户脚本没有网站特权。 您可以开发一个插件来全面访问浏览器gui。 有用于开发插件的模板/样板。 它只是将JavaScript压缩到.xpi文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.