3

更新:これは Chrome のバグとして特定されています。(ありがとう@マイケル・ロビンソン)

Chrome (少なくとも v22) では、contentEditable が無効になった後でも、スペルチェックの「赤い波線」の下線が残る可能性があることに気付きました。

デモ用に jsfiddle を作成しました: jsfiddle demo

波線とスペルミス

spellcheck="false"無効にする前に属性を設定してもcontentEditable残ります。

これを解決または回避する良い方法を知っている人はいますか? コンテンツが編集可能な場合は、組み込みのスペル チェック機能を保持するのが理想的です。

4

5 に答える 5

3

display: none(CSS を使用して) 設定してから、表示を元の状態に戻してみましたか? Chromeに要素の再描画を強制する可能性があります...(機能しませんでした。以下の他の解決策を参照してください)

または、要素のコピーを作成して (ただし contenteditable を無効にして)、元の要素の直後に配置し、元の要素を削除することもできます。

UPDATE 1 : 最初の解決策は機能しませんでしたが、2 つ目の解決策は機能します。更新された JSfiddle http://jsfiddle.net/RegVn/6/

UPDATE 2 : 上記のソリューションは、破棄イベント ハンドラーを削除する innerHTML を使用します。また、選択/キャレットの位置も破棄します。

新しいメソッドは、jQuery のclone()メソッド (ディープ クローン モード) を使用してオブジェクトのコピーを作成し (イベント ハンドラーをコピーします)、選択範囲への参照を保存し、後で復元するカスタム関数を備えています。選択の保存/復元機能は ie6-8 では機能しないことに注意してください。更新された JSfiddle: http://jsfiddle.net/RegVn/23/

于 2012-10-11T12:19:23.830 に答える
1

spellcheck 属性は、要素のスペルと文法をチェックするかどうかを指定します。

スペルチェック=「偽」

于 2012-10-10T16:01:58.067 に答える
1

要素の innerHTML を更新すると、スペルチェックが再評価されるためspellcheck="false"、要素が編集可能でない場合は表示されなくなります。

例えば:

myElement.innerHTML = myElement.innerHTML + " "; // add a space to force a change.

これには重大な欠点があります。

  • 要素を参照するイベント ハンドラーと JavaScript オブジェクトは無効になります (要素内のすべての要素は、実質的に dom から削除されます)。indeterminateこれは、チェックボックスのプロパティやその他のカスタム プロパティなど、JavaScript のみのプロパティが破棄されることも意味します。
  • 選択またはキャレットの位置が破棄されます。
  • 大量のコンテンツがある場合、特にモバイルでは、これは CPU にとって重要な操作です。

今のところこれで問題ありませんが、より良い答えを探しています。提案?

于 2012-10-15T01:13:07.240 に答える