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> </p>
うまくやっていますが、これによりすべての行がスペースでインデントされ、新しい行にはスペースがありません。
タグをレンダリングできるようにし、各行にスペースを入れないようにするZero Width Space
文字があることを発見しました!​
P
ユーザーが行を削除している場合を除いて、私の新しい<p>​</p>
ものはうまく機能します。最初のバックスペースは何もしないように見えます。
そこで、バックスペースのキーダウン イベントにバインドしました。カーソルの前の文字をチェックし、それが私のZero Width Space
文字の場合は空白にして、通常どおりバックスペースを続けます。
これは機能しますが、削除したい行をクリックしてすぐにバックスペースをクリックした場合を除きます。そのアクションにより、2 行が削除されます。
IE8 をロードして、ここで試すことができます。http://jsbin.com/ucahor/1/edit#/ucahor/2/edit