Javascript 使用userscript将自定义键盘快捷键添加到Chrome with Tampermonkey

Javascript 使用userscript将自定义键盘快捷键添加到Chrome with Tampermonkey,javascript,google-chrome,keyboard-shortcuts,userscripts,tampermonkey,Javascript,Google Chrome,Keyboard Shortcuts,Userscripts,Tampermonkey,我想在某个网页上添加一些自定义键盘快捷键 使用此问题的公认答案作为指南: 我制作了自己的小函数并添加了一个侦听器: // ==UserScript== // @name ChartGame // @namespace http://www.chartgame.com/ // @version 0.1 // @description enter something useful // @match http://www.chartgame.com/play* //

我想在某个网页上添加一些自定义键盘快捷键

使用此问题的公认答案作为指南:

我制作了自己的小函数并添加了一个侦听器:

// ==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);
如果我在适当的网页上将代码输入Chrome javascript控制台,那么该代码运行得非常好。我可以按预期使用键盘快捷键。唯一的问题是,如果我进入下一个游戏(即chart…),我必须重新输入javascript代码,包括侦听器

我的印象是,Tampermonkey允许我在与
@match
上的表达式匹配的特定页面上自动运行此脚本。代码看起来确实在运行,但没有键盘快捷键功能


从Chrome控制台和Tampermonkey等扩展运行javascript代码缺少什么或有什么不同

该代码在用户脚本中不起作用,因为它正在调用目标页面定义的javascript函数。用户脚本在各种沙盒中运行,因此无法如此轻松地查看目标页面的JS

Tampermonkey(和Greasemonkey)提供了一种解决方法。(纯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);



另一种方法,也是一种适用于纯Chrome用户脚本的方法,是。但是由于您使用的是Tampermonkey,因此在本例中只需使用
unsafeWindow
方法即可。

谢谢,您的建议非常有效!有一段时间我将不得不研究Chrome中的代码注入,但我现在喜欢的是快速、肮脏和工作。这只是一个脚本向google文档添加不同快捷方式的示例: