JavaScript快捷方式dispatchEvent不起作用

时间:2018-09-20 17:40:45

标签: javascript google-chrome google-sheets windows-7 tampermonkey

最近更新了Google电子表格,添加了侧边栏,其快捷键 Ctrl + Alt + << / kbd>与Windows屏幕键盘冲突。 (osk.exe)

  

当用户在汉语注音符号模式下按下快捷键“ Ctrl + Alt + <”时,将显示此小键盘。   When user in Mandarin Phonetic Symbols mode keydown the shortcut "Ctrl+Alt+<", this small keyboard will display.

     

在电子表格中,当按下 Ctrl + Alt + << / kbd>键时,它将更改为此处。   In Spreadsheets, when keydown <kbd>Ctrl+Alt+<</kbd>, it'll change to here.

我只想在Google电子表格中禁用此快捷方式,所以我编写了脚本:

// ==UserScript==
// @name           Disable Shortcut: Ctrl+Alt+<
// @author         LianSheng142
// @version        0.1
// @match          https://docs.google.com/spreadsheets*
// @run-at         document-body
// ==/UserScript==

(function() {
    function disable() {
        // Ctrl + Alt + < (docs-cycle-focus-previous)
        if(event.ctrlKey && event.altKey && event.keyCode === 188){
            console.log('"CTRL+ALT+<" pressed.');

            var e = new KeyboardEvent("keydown", {altKey: true, ctrlKey: true, keyCode: 190});
            st.dispatchEvent(e);
        }
        // (listen) Ctrl + Alt + > (docs-cycle-focus-next)
        if(event.ctrlKey && event.altKey && event.keyCode === 190){
            console.log('"CTRL+ALT+>" sent.');
        }
    }
    var st = document.getElementsByTagName("body")[0];
    st.addEventListener("keydown", disable, false);
})();

我在Ubuntu 16.04和Chrome 69上尝试了此用户脚本,它可以正常工作! 但是,我在Windows 7和Chrome 69(在控制台日志受到监视的情况下)上尝试了此操作,但是随后屏幕未成功发送 Ctrl + Alt +> ...

为什么?


对不起,我的英语有点差。

0 个答案:

没有答案