从chrome 54开始,如何从扩展调度可信的textInput事件
As of chrome 54, how dispatch a trusted textInput event from an extension?
我正在尝试从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')
但是它根本不应该工作(设计模式未启用,并且应该只适用于contenteditable
div)
正如所料,在Chrome 54我的工作方式不再工作了…有谁有主意吗?
与这个问题有关:作为Chrome 53,如何添加文本,如果一个可信的textInput事件被派遣?
我确认它不再在Chrome 54中工作了。然而,我找到了一个解决办法。我现在使用剪贴板API。更准确地说:
-
我创建了一个临时文本区域并将其聚焦
-
我将剪贴板的当前内容粘贴到文本区域,然后将其保存到变量
-
然后把我要写的文本放到文本区域,选中它,复制它
-
我把焦点放回我想要写入的元素,并粘贴
-
然后重新选择文本区域,重新复制以将原始内容放回剪贴板中,最后将焦点放回我要写入的元素。
在我的情况下,选择范围继续进行一些更多的技巧,因为我需要以编程方式替换选择文本,不仅插入文本,而且我已经解释了所有的主要步骤:)这是我发现的唯一的解决方案,在任何地方都可以工作,在ContentEditablediv和输入一样,是否有反应。好运!
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- TextInput onChange事件接收的是文本对象而不是字符串
- 从chrome 54开始,如何从扩展调度可信的textInput事件
- 作为Chrome 53,如何添加文本,如果一个可信的textInput事件被派遣
- Textinput或Textarea值改变的触发事件