Javascript Android4.3(KitKat/Using Chromium WebView)如何在WebView上侦听onfocus DOM事件?
我在互联网上搜索了几乎所有的地方,没有一个明显的解决方案 我有一个本地Android应用程序,它有一个Javascript Android4.3(KitKat/Using Chromium WebView)如何在WebView上侦听onfocus DOM事件?,javascript,android,events,contenteditable,copy-paste,Javascript,Android,Events,Contenteditable,Copy Paste,我在互联网上搜索了几乎所有的地方,没有一个明显的解决方案 我有一个本地Android应用程序,它有一个contentEditableWebView。 (其中有一个带有一些格式和一些图像的初始示例HTML) 目前,当用户粘贴一些东西时,我们有一些问题 首先,Android不尊重插入符号的位置:当示例文本粘贴到contentEditablediv的底部时;而是在开头粘贴 LI>在测试自我暗示中也会发生同样的情况:当用户从可编辑内容中间的自动提示列表中选择某个内容时,该建议被粘贴到内容的开始处。
contentEditable
WebView。
(其中有一个带有一些格式和一些图像的初始示例HTML)
目前,当用户粘贴一些东西时,我们有一些问题
- 首先,Android不尊重插入符号的位置:当示例文本粘贴到
div的底部时;而是在开头粘贴contentEditable
<> LI>在测试自我暗示中也会发生同样的情况:当用户从可编辑内容中间的自动提示列表中选择某个内容时,该建议被粘贴到内容的开始处。
事件不会触发(这是检测是否粘贴了内容的最明显方法)onpaste
- 我试着使用;虽然他们在桌面Chrome上工作,但当我在设备上尝试时,我遇到了一个“未定义对象”错误
- 仅粘贴内容时,
,keyup
,和input
事件被触发。(*我认为他们是唯一有效的keydown
- 当用户粘贴某物时,我得到一个
事件,然后是一个keydown
事件input
- 当用户键入某个内容时,我得到一系列
keydown
input
事件keydup
- 当用户自动更正某些内容时,我会得到N个连续的
事件(N是1到5之间的随机数,根据我的观察)输入
选择范围
(以缓存插入符号位置)contentEditable
区域的innerHTML
输入
事件时,设置100ms
计时器以检查其后面是否有keyup
事件。
- 如果是,则不执行任何操作,因为这是常规类型的事件
- 如果不是,那么
- 在缓存的
和当前的innerHTML
之间执行diff/mergeinnerHTML
- 从“差异/合并”中提取粘贴的内容
- 将
的contentEditable
恢复为缓存的值innerHTML
- 将提取的粘贴内容插入缓存的插入符号位置
- 将插入符号移动到上面插入内容的末尾
有没有人遇到过类似的问题?我非常感谢任何建议。我想我会致力于此,并以开源项目的形式发布。这看起来是一项富有挑战性和乐趣的任务。--不过,任何建议都非常受欢迎。