0

私は今、ウェブで数日見ていますが、キャレットが要素に触れているかどうかを見つける方法がわからないようです。この例を使って、もう少し自分自身を説明しましょう。

This is a[ ] <span>example</span>

例として、キャレットがタグ [ ] であるとします。そして、キャレットがスパン要素の近くにあるかどうかを知りたいですか? どうすればこれを見つけることができますか?また、スパン要素がキャレットの前か後かを知る必要があります。

私はCKEDITOR 4.0 APIでこれをやっています..

4

1 に答える 1

3

これを試して:

var range = CKEDITOR.instances.yourEditorInstance.getSelection().getRanges()[ 0 ];
range.optimize();
console.log( range.getBoundaryNodes() );

また:

console.log( range.getTouchedEndNode() );
console.log( range.getTouchedStartNode() );

範囲は要素の内部にある可能性があることに注意してください(e4、下の画像など)。そのため、境界ノードは常にテキストノードになります。詳細については、 DOM 範囲の仕様を確認してください。

ここに画像の説明を入力


編集:これらも試してみる価値があります:

range.getNextNode();
range.getPreviousNode();

結局のところ、ノードを取得したら、それを確認できます。

var node = range.getNextNode();
console.log( node.type == CKEDITOR.NODE_ELEMENT && node.is( 'span' ) );
于 2013-02-26T11:08:04.190 に答える