我创建了一个用户脚本,用于定期从Google Chrome中删除历史记录。我能想到的最简单的方法是安装Clear Cache
https://chrome.google.com/webstore/detail/clear-cache/cppjkneekbjaeellbfkmgnhonkkjfpdn?hl=en,它允许您配置用于删除历史记录的键盘快捷键。我设置的快捷方式是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);
}
答案 0 :(得分:2)
event.keyCode = 18&&57;
不工作。这是一个逻辑/布尔操作,实际上是57,因为18的计算结果为true,所以第二个操作数被赋值。
二进制操作18&57
也不代表alt+9
。要在按住alt键的同时模拟keydown 9
,您必须提供57的keycode
并将alt-indicator设置为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文件。