google-apps-script - 谷歌文档 : dispatch a keyboard event with userscript (tampermonkey)

标签 google-apps-script google-docs keyboard-events userscripts tampermonkey

我想在 Google 文档上模拟键盘事件来更改缩放。

我使用鼠标事件输入了 ID 为 zoomSelect 的 div:

var button = document.getElementById("zoomSelect");
triggerMouseEvent (button, "mouseover");
triggerMouseEvent (button, "mousedown");
triggerMouseEvent (button, "mouseup");


function triggerMouseEvent (node, eventType) {
    var eventObj        = document.createEvent('MouseEvents');
    eventObj.initEvent (eventType, true, true);
    node.dispatchEvent   (eventObj);
}

然后我想发送一个数字(比如 9)。我尝试了所有这些选项,但它们不起作用。输入没有收到按键。我还尝试将事件直接发送到 document(而不是 button),但没有成功。

使用键盘事件:

var eventObj = document.createEvent("KeyboardEvent");
(eventObj.initKeyEvent || eventObj.initKeyboardEvent)("keypress", true, true, null,
               0, 0, 0, 0,
               0, character.charCodeAt(9));

button.dispatchEvent(eventObj);

有事件(没有s):

var eventObj = document.createEvent('Event');
eventObj.initEvent('keydown', true, true);
eventObj.keyCode = 105;
button.dispatchEvent(eventObj);

有事件:

var eventObj = document.createEvent("Events");
(eventObj.initKeyEvent || eventObj.initKeyboardEvent)("keypress", true, true);

eventObj.keyCode = 105;
eventObj.which = 105;
eventObj.ctrlKey = false;
eventObj.shiftKey = false;
eventObj.altKey = false;
button.dispatchEvent(eventObj);

使用新的 KeyboardEvent:

button.dispatchEvent(new KeyboardEvent("keypress", {keyCode: 9}));

使用 dispatchKeyEvent:

button.dispatchKeyEvent("9"); 

完整 script

最佳答案

你的 - With 事件(没有 s)将与按键事件一起工作:

var eventObj = document.createEvent('Event');
eventObj.initEvent('keypress', true, true);
eventObj.keyCode = 105;
button.dispatchEvent(eventObj);

您会看到一个字符“i”被插入到光标位置的文档中。 并调用 SAVE API。

关于google-apps-script - 谷歌文档 : dispatch a keyboard event with userscript (tampermonkey),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49864255/

相关文章:

javascript - Google Apps 脚本和 JavaScript 中的 base64 编码的不同结果

java - 如何在 Google 电子表格中添加标题

javascript - 如何禁用/删除 imgur.com 上的网站键盘热键?具体来说,上传重音符/波浪号 (`) 命令

linux - 如何为 Eclipse 设置 Super/Windows/mod4 键绑定(bind)

javascript - 如何使用负时间戳进行数学运算?

google-apps-script - 勾选复选框触发添加时间戳的功能

javascript - 使用 JavaScript 以编程方式编辑 Google 文档

jquery - 如何确定 Google 表格窗口大小

javascript - 如何使用createEvent和dispatchEvent设置焦点并设置输入文本中的文本?

google-apps-script - Google Apps脚本-获取用户的电子邮件地址