最近小夥伴在研究框選 Highlight 的功能,一般都比較直覺地採用 window.getSelection()
和 regex、取代的方式來處理,但這在文本複雜的情況下,例如有多個 tag 包裹時,容易會有問題,或是程式碼難以維護 (想像各式各樣的正規表示式…)。
才疏學淺,直至此刻才認識到了 document.designMode
和 document.execCommand()
方法,實在是感到驚為天人~因為也沒有太深入研究,在此只做個紀錄和資源參考。
要玩看看可以參考這篇部落格文章:(HTML)用 contenteditable 與 designMode 創造自己的 HTML 編輯器 (作者:法奇)
土炮的 getSelection() Demo:
See the Pen highlight selection by Winter (@yichinweng) on CodePen.
使用 designMode 的版本 (Fork Arturo Campos ):
See the Pen Highlight color with execCommand by Winter (@yichinweng) on CodePen.