埋め込みテキスト エディターの機能を完全に制御する必要がある Web アプリケーションのアイデアがあり、テキスト エディターはすべてのブラウザーでまったく同じように機能する必要があります。今回の私のニーズには、標準のcontenteditable
機能では十分ではありません。
そのため、カスタム テキスト エディターを実装するさまざまな方法を試してきました。私の最初のアプローチは、キャレット挿入のマウス クリックを検出することでした (ただし、これを実現する方法がないように見えるため、キャレットは表示されません)。これはかなりうまくいきましたが、残念ながらキャレット (点滅する I ビーム) を表示する方法がありませんでした。
これは、点滅するキャレットもカスタムメイドである必要があることを意味します。すべてのブラウザーで互換性がある方法でこれを達成するための 2 つの良い方法しか思い浮かびません。
最初の (そしておそらくより良い) オプションは、Google が Google ドキュメントで行ったように、JavaScript でカスタム レイアウト エンジンを実装することです。
2 番目の解決策 (おそらくはるかに簡単) は、各文字を独自の
<span>
要素内にカプセル化して、特定の文字の間に偽のキャレットを配置できるようにすることです。これは、多くの span 要素が存在することを意味しますが、ブラウザー レイアウト エンジンを利用しながら、必要なものを確実に達成できます。このアプローチのもう 1 つの利点は、危険なブラウザー固有のテキスト選択ハックに頼る必要がないことです。
私の質問は、オプション #2 は本当に悪い考えですか? もしそうなら、なぜですか?