我创建了一个用户脚本,用于定期从 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);
}
event.keyCode = 18&&57;
不起作用。这是一个逻辑/布尔运算,实际结果为 57,因为 18 的计算结果为 true,因此分配了第二个操作数。
二元运算18&57
也不会代表
alt+9
。要在按住 alt 键时模拟
keydown 9
,您必须将
keycode
设置为 57 并将 alt 指示器设置为 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);
这样做你可以操纵网络应用程序,但是,你
不能访问浏览器功能,因为任何网站都可以这样做,这意味着很高的安全风险。
用户脚本并不比网站拥有更多特权。您可以开发一个插件来全面访问浏览器 GUI。有用于开发插件的模板/样板。它只是压缩到 .xpi 文件的 JavaScript。
function End(){ var event = new KeyboardEvent('keydown', { key: 'End', code: 'End', which: 35, keyCode: 35, });
window.dispatchEvent(event); }
在脚本中任意位置调用End();
时,都会模拟按下END键