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