Sin*_*int 5 javascript google-chrome keyboard-shortcuts userscripts tampermonkey
我想在某个网页上添加一些自定义键盘快捷键.
使用此问题中接受的答案作为指导:如何向现有JavaScript函数添加JavaScript键盘快捷键?
我创建了自己的小函数并添加了一个监听器:
// ==UserScript==
// @name ChartGame
// @namespace http://www.chartgame.com/
// @version 0.1
// @description enter something useful
// @match http://www.chartgame.com/play*
// @copyright 2012+, You
// ==/UserScript==
function doc_keyUp(e) {
switch(e.keyCode)
{
case 49: //1
mon_clk(3);
break;
case 50:
mon_clk(6);
break;
case 83: //s
BuySell(0);
break;
case 68: //d
BuySell(1);
break;
case 70: //f
TimelapseDwn();
TimelapseUp();
break;
default:
break;
}
}
document.addEventListener('keyup', doc_keyUp, false);
Run Code Online (Sandbox Code Playgroud)
如果我在相应的网页上将其输入Chrome javascript控制台,则此代码运行完全正常.我可以像我想的那样使用键盘快捷键.唯一的问题是如果我去下一场比赛(即图表......),我必须重新输入包含听众的javascript代码.
我的印象是,Tampermonkey允许我在与表达式匹配的特定页面上自动运行此脚本@match.代码似乎运行,但没有键盘快捷键功能.
从Chrome控制台和Tampermonkey等扩展程序运行javascript代码缺少什么或有什么不同?
该代码在用户脚本中不起作用,因为它调用目标页面定义的javascript函数.用户脚本在各种沙箱中运行,因此无法轻易看到目标页面的JS.
Tampermonkey(和Greasemonkey)提供了解决这个问题的方法unsafeWindow.(纯Chrome用户脚本不支持unsafeWindow任何有用的方式.)
因此,要使用这些函数,请为它们添加前缀:
// ==UserScript==
// @name ChartGame
// @namespace http://www.chartgame.com/
// @version 0.1
// @description enter something useful
// @match http://www.chartgame.com/play*
// @copyright 2012+, You
// ==/UserScript==
function doc_keyUp(e) {
switch (e.keyCode) {
case 49:
//1
unsafeWindow.mon_clk(3);
break;
case 50:
unsafeWindow.mon_clk(6);
break;
case 83:
//s
unsafeWindow.BuySell(0);
break;
case 68:
//d
unsafeWindow.BuySell(1);
break;
case 70:
//f
unsafeWindow.TimelapseDwn();
unsafeWindow.TimelapseUp();
break;
default:
break;
}
}
document.addEventListener('keyup', doc_keyUp, false);
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用普通的Chrome用户脚本,它是一种注入代码的方法.但由于您使用的是Tampermonkey,因此unsafeWindow在这种情况下只需使用该方法即可.
| 归档时间: |
|
| 查看次数: |
6897 次 |
| 最近记录: |