处理 slate 编辑器在 safari 下的兼容题目及中文输入法光标题目

媒介

用过 slate 编辑器的都晓得它关于中文输入有以下兼容性题目:

  • 在 chrome 浏览器下,输入中文是,编辑区的光标一直停在拼音的前面(不影响输入,但体验很糟)
  • 在 safari 等支撑 onbeforeinput 要领的浏览器下(HAS_INPUT_EVENTS_LEVEL_2)没法运用输入法输入中文

GitBook 运用的也是 slate 编辑器,但它对 slate 底层做了许多修正,处理了这些题目。在我对照 gitbook/slate 与 slate 时,没有找到处理方案。

厥后,我在 slate 的 issue 里查找该题目,找到了一些不错的回复。

环境:slate 0.47.1 slate-react 0.22.1

光标停留在拼音前的题目

参考 pull request 。找到相干源代码,修正即可。

依据上述代码修正以后,发明光标题目处理了,且 safari 浏览器下也有了一些小变化:输入法能一般工作了,然则末了的输入内容不会输入到 浏览器内。

safari 输入题目

参考 issue 。末了面用户 hudk114 的批评里有提到,须要在 onCompositionEnd 时,依据是不是须要插进去数据(HAS_INPUT_EVENTS_LEVEL_2 为真时),挪用 edit.insertText 插进去数据。

如许写就行:

const isSynthetic = !!event.nativeEvent
if (isSynthetic && HAS_INPUT_EVENTS_LEVEL_2){
  editor.insertText(event.data);
}

修正了这两处以后,输入中文的题目即可处理。

    原文作者:Y_xx
    原文地址: https://segmentfault.com/a/1190000019133673
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞