最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Google Docs simulate keyboard - Stack Overflow

programmeradmin3浏览0评论

I need to simulate keyboard in google docs with using JavaScript to be able print or erase characters on cursor position.
Unfortunately solutions with simulating keypress event didn't work for me. I tried with and without jQuery.
After some investigation I detected that Google Docs have virtual keyboard. Clicks on virtual keys calls this function:

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

Where Td is a string "action" and Q some Event class.
What is the correct way to send this event with java script? Is there other ways to simulate keyboard in Google Docs?

I need to simulate keyboard in google docs with using JavaScript to be able print or erase characters on cursor position.
Unfortunately solutions with simulating keypress event didn't work for me. I tried with and without jQuery.
After some investigation I detected that Google Docs have virtual keyboard. Clicks on virtual keys calls this function:

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

Where Td is a string "action" and Q some Event class.
What is the correct way to send this event with java script? Is there other ways to simulate keyboard in Google Docs?

Share Improve this question asked Dec 4, 2014 at 9:58 Sergey KuryanovSergey Kuryanov 6,11431 silver badges52 bronze badges 1
  • 1 Just as a note about jQuery event: Events emitted with $(elm).trigger(yourEvent) are no real events and do not do real DOM bubbling (at least the last time I looked into jQuery), cause of that those event are only detected by jQuery itself. – t.niese Commented Dec 8, 2014 at 10:55
Add a ment  | 

2 Answers 2

Reset to default 13

Paste the following code in console of google docs.

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);

You will see the character "i" inserting on the document.

Seems like Google Docs have special iframe to handle keyboard events. Here is it’s contents:

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

Just dispatch keyboard events to this document to print characters on google doc.

发布评论

评论列表(0)

  1. 暂无评论