Safari 文本框使用中文输入法 keydown 事件会在内容变更之后执行,如何解决?

在 Safari 9.0.1 中使用搜狗输入法键入内容时,绑定的 keydown 事件执行时获取到的已经是变更之后的内容。

<textarea id="textarea" cols="30" rows="10">12345678</textarea>
<script>
textarea.onkeydown=function(e){
    alert(textarea.value)
}
</script>

重现

Safari 下在上面的例子中开启中文输入法,尝试输入内容即可

图片描述

需求

有没有可能解决这个 bug?

如果不能解决

解决这个问题的最终目标是:获取内容变更前的正文内容和选取范围

希望能直接获取到内容变更前的正文内容和选取范围,而不是提前记录正文内容和选取范围。

阅读 3.7k
2 个回答

最后解决了?

做个初始化不就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题