ボタンをクリックすると、特定の単語を置き換えるオプションが表示されます。まず、すべての html を取り除き、単語を置き換えることができる span 要素を作成します。これらの単語のマークアップは異なり、いくつかの問題に直面しています。
- スパンの直前または直後をクリックしてテキストを入力すると、テキストはスパンと同じマークアップになります。スパンしかない行に単語を追加するのは非常に困難です。スパンをパディングすることでこれを解決することを考えていまし
たが、ちょっと奇妙に見えます。 - ユーザーはスパンをクリックして変更できます。変更する前に、ユーザーにスパンをクリックして、置換または無視オプションを選択してもらいたいと思います。つまり、ロックする必要があります。私は capturig keyup でこれを行うことを考えていました。それがスパンから来る場合は e.preventDefault() ですが、それをプログラムするのは少し面倒です。
だから私の質問は:
key up と preventDefault のキャプチャを伴わない contenteditable で span 要素をロックする簡単な方法はありますか (まだ試しておらず、機能するかどうかさえわかりません)。
スパンのすぐ隣でカーソルをクリックまたは移動してテキストを入力すると、スパンの一部になります。それをスパンの一部にしない方法はありますか? スパンのパディングは機能する
かもしれませんが、スパンが行の最初の単語である場合は奇妙に見えます。これを説明するために、以下に例の html ファイルを投稿しました。
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Example</title>
</head>
<body>
<div contenteditable="true"></div>
<script type="text/javascript">
document.getElementsByTagName("div")[0]
.innerHTML="<span style='color:green'>hello</span>"
</script>
</body>
</html>