0

TLDR
IE8 でこれを開きますhttp://jsbin.com/ucahor/1/edit#/ucahor/2/edit
空白行をクリックし、すぐに を押しBackspaceます。2 行削除されます。
空白行をクリックし、少し待ってから を押しBackspaceます。1 行削除されます。
これを回避するためにできることはありますか?

全文
Web アプリケーションに最適なリッチ テキスト エディタを作ろうとしています。私はNicEditを採用し、多くの機能を追加しました。nicedit を使用しているのは、テストした 9 つの中でこれらの要件を満たす唯一のエディターだったからです。

  • IE6で動作
  • Wordから貼り付け可能
  • 番号付けと箇条書き
  • 純粋な Javascript (簡単に変更できるようにするため)
  • ダウンロードしたファイルの数が少ない
  • カーソル位置を設定できます
  • 全画面表示可能
  • 大きなファイルを処理できます (1500 段落を貼り付け)

NicEdit の実装に追加したことの 1 つは、ユーザーが作成する一般的なレポートに見出しを挿入することです。これに関する問題は、ヘッダー間に空白行を入れる方法が必要なことです。<br/>リストを挿入するとうまくいかないため、タグを使用できません。<div>また、Internet Explorer には、コンテンツの編集可能な div 内の div に問題があるため、タグを使用できません。

これにより、<p>新しい行を示すためにタグを使用することになります。

ただし、 をそのまま使用することはできません<p></p>。これは、ユーザー エージェントが空のPタグを無視するための HTML 標準です。

現在、私のユーザーは<p>&nbsp;</p>うまくやっていますが、これによりすべての行がスペースでインデントされ、新しい行にはスペースがありません。

タグをレンダリングできるようにし、各行にスペースを入れないようにするZero Width Space文字があることを発見しました!&#8203;P

ユーザーが行を削除している場合を除いて、私の新しい<p>&#8203;</p>ものはうまく機能します。最初のバックスペースは何もしないように見えます。

そこで、バックスペースのキーダウン イベントにバインドしました。カーソルの前の文字をチェックし、それが私のZero Width Space文字の場合は空白にして、通常どおりバックスペースを続けます。

これは機能しますが、削除したい行をクリックしてすぐにバックスペースをクリックした場合を除きます。そのアクションにより、2 行が削除されます。

IE8 をロードして、ここで試すことができます。http://jsbin.com/ucahor/1/edit#/ucahor/2/edit

4

0 に答える 0