Firefox はこれを Chrome よりもうまく処理しますが、私が望んでいる方法とはまったく異なります。どちらも、隣接するすべての HTML タグをまとめて 1 つとして扱います (これは望ましくありません)。
Firefox: カーソルがタグ (または隣接するタグのグループ) の左側にあり、右を押すと、カーソルはタグの前の最初の文字を超えてジャンプします。次に、左を押すと、文字とタグの間を移動します。(左右を押しても同じです。)
Chrome: タグとそれに続く最初の文字がまとめられます。タグと次の文字の間にカーソルを置くことはできません。
望ましい: タグは、カーソルに対して単一の文字として扱われます。カーソルがタグの左側にあるときに右を押すと、タグの右側に移動し、左を押すとその逆になります。
ブラウザで望ましい動作を強制するにはどうすればよいですか?
これは WYSIWIG エディター向けではありません。特定の目的を果たすために、タグは、jsfiddle と同じように、本番環境でも視覚的に表現されます。ユーザーは、カーソルを含む要素を任意に制御したいと考えています。
b:before, b:after,
i:before, i:after,
p:before, p:after {
color: blue;
}
b:before {
content: '<b>';
}
b:after {
content: '</b>';
}
p:before {
content: '<p>';
}
p:after {
content: '</p>';
}
i:before {
content: '<i>';
}
i:after {
content: '</i>';
}
----------
<p contenteditable='true'>regular regular<b>bold</b>regular -
try moving the cursor to either side of either blue tag.</p>
<p contenteditable='true'>try it in this: regular<b><i>bolditalic</i></b></p>