0

以前の投稿: Finding Touched elments CKEDITORで、私は touched elements を探していました。その投稿のアンサーはうまくいきました。

しかし今、私は別の問題を抱えています。キャレットがタグ/ブロックの先頭または末尾に設定されている場合。親がスパンであることしかわかりません。しかし、ユーザーがキャレットをタグのすぐ外側に置こうとした可能性があります。例:

this ^<span>^test</span> text 

キャレットは両方の「^」に設定できますが、違いはありません。

(単一選択 (startContainer == endContainer))

タグのすぐ外側にある場合、前の投稿の anwser はスパンを検出します。しかし、タグ内だけでは、新しいシナリオを提供するものは検出されません..新しいシナリオを回避し、タッチされたブロックのように処理できるようにする方法が必要です。

キャレットがスパン内にあるかどうかを検出し、開始に触れたいと思います。終わりについても同じです。関数 range.checkStartOfBlock は false を返します。これは解決策ではありません。

4

1 に答える 1

0

Mozilla の修正を見つけました。IE7 以降の修正も必要です。

Mozilla の修正: 開始のチェック:

range.startOffset === 0 //Means StartOfBlock

終了の確認:

range.endOffset === range.startContainer.getText().length //Means EndOfBlock

==== 編集 ====

rangy.googlecode.com の範囲範囲ライブラリは、許容できる解決策を提供しました。(何らかの形で互換性のある startOffset およびその他の機能を提供します。) Internet Explorer では約 3 回のチェックが必要でしたが、Mozilla では 1 回しか必要ありませんでした。しかし、それはばかげた証拠のようです。

それでも、すべてのアイデアは大歓迎です。

于 2013-03-04T14:54:08.457 に答える