从chrome 54开始,如何从扩展调度可信的textInput事件

As of chrome 54, how dispatch a trusted textInput event from an extension?

本文关键字:事件 textInput 调度 chrome 开始 扩展      更新时间:2023-09-26

我正在尝试从Chrome扩展中触发可信的textInput TextEvent。

在Chrome≤52我可以做以下事情:

const textEvent = document.createEvent('TextEvent')
textEvent.initTextEvent('textInput',
            true,
            true,
            null,
            'myString');
document.activeElement.dispatchEvent(textEvent)

在Chrome 53中,我有以下解决方案:

document.execCommand('insertText', false, 'myString')

但是它根本不应该工作(设计模式未启用,并且应该只适用于contenteditablediv)

正如所料,在Chrome 54我的工作方式不再工作了…有谁有主意吗?

与这个问题有关:作为Chrome 53,如何添加文本,如果一个可信的textInput事件被派遣?

我确认它不再在Chrome 54中工作了。然而,我找到了一个解决办法。我现在使用剪贴板API。更准确地说:

  • 我创建了一个临时文本区域并将其聚焦

  • 我将剪贴板的当前内容粘贴到文本区域,然后将其保存到变量

  • 然后把我要写的文本放到文本区域,选中它,复制它

  • 我把焦点放回我想要写入的元素,并粘贴

  • 然后重新选择文本区域,重新复制以将原始内容放回剪贴板中,最后将焦点放回我要写入的元素。

在我的情况下,选择范围继续进行一些更多的技巧,因为我需要以编程方式替换选择文本,不仅插入文本,而且我已经解释了所有的主要步骤:)这是我发现的唯一的解决方案,在任何地方都可以工作,在ContentEditablediv和输入一样,是否有反应。好运!