【问题标题】:Google Docs simulate keyboardGoogle Docs 模拟键盘
【发布时间】:2026-01-18 16:40:01
【问题描述】:

我需要使用 JavaScript 在 google 文档中模拟键盘,以便能够打印或擦除光标位置上的字符。
不幸的是,模拟按键事件的解决方案对我不起作用。我尝试过使用和不使用 jQuery。
经过一番调查,我发现 Google Docs 有虚拟键盘。点击虚拟键调用此函数:

C.MOa = function(a) {
  this.dispatchEvent(new Q(Td, {keyCode: a}))
};

其中Td 是字符串“动作”,Q 是某个事件类。
使用 java 脚本发送此事件的正确方法是什么?还有其他方法可以在 Google Docs 中模拟键盘吗?

【问题讨论】:

  • 就像关于 jQuery 事件的说明:$(elm).trigger(yourEvent) 发出的事件不是真正的事件,也不会做真正的 DOM 冒泡(至少在我最后一次查看 jQuery 时),这些事件的原因仅由 jQuery 本身检测到。

标签: javascript google-docs keypress


【解决方案1】:

将以下代码粘贴到谷歌文档的控制台中。

const input = document.querySelector(".docs-texteventtarget-iframe").contentDocument.activeElement;
    
// Insert the character in the document and trigger the save API call
const eventObj = document.createEvent("Event");
eventObj.initEvent("keypress", true, true);
eventObj.keyCode = 105;
input.dispatchEvent(eventObj);

您将看到在文档中插入字符“i”。

【讨论】:

  • 在 Google Docs 更新为基于画布的渲染而不是基于 HTML 的渲染之后,这仍然有效吗?
  • 它似乎不起作用。
【解决方案2】:

似乎 Google Docs 有特殊的 iframe 来处理键盘事件。内容如下:

<html>
    <head></head>
    <body spellcheck="false" role="textbox" aria-label="Document content" contenteditable="true" style="background-color: transparent;"></body>
</html>

只需将键盘事件发送到此文档即可在 google doc 上打印字符。

【讨论】:

  • 对于 google 电子表格是否有与此等效的功能?
  • 在 Google Docs 更新为基于画布的渲染而不是基于 HTML 的渲染之后,这仍然有效吗?
  • 似乎没有。