3

時間 a でのカーソル位置を取得します。次に、時間 b でのカーソル位置を取得します。時刻aのカーソル位置から時刻bのカーソル位置までの範囲を作りたいです。時間 a と b は、ctr-v (貼り付け) の開始と終了です。

カーソル位置をそのように取得します-または、カーソル位置の範囲を取得します。

sel = window.getSelection();
range_time_a = sel.getRangeAt(0).collapse(true);

しかし、range_time_a と range_time_b を使用して、range_time_a で開始し、range_time_b で終了する新しい範囲を作成するにはどうすればよいですか?

カーソルで要素を取得し、その要素内のオフセットを取得するコードを見てきました。setStart() と setEnd にそれを使用できますが、既に 2 つの範囲を取得しているので、もっと簡単な方法があるはずです。

4

1 に答える 1

1

編集これは実際にはあなたが探しているものを提供しません...これは本当に複雑です。commonAnscestorContainer.innerHTML の私の最初の提案は、あまりにも多くのことを返します (選択したものに最も近い親コンテナーのすべての HTML)。

まず、おそらく、ユーザーが ctrl+c を押したときに起動する eventHandler でこのコードをトリガーしたいと思うでしょう (議論はこちら: How to detect Ctrl+V, Ctrl+C using JavaScript? )。

テキストのみを選択したい場合は、簡単に実行できます。

range = window.getSelection().toString();

さまざまな時点で選択内容を確認する必要はありません。ユーザーが ctrl-c を押した時点でキャプチャするだけで済みます。

getSelection は、選択範囲の HTML をキャプチャするためのものではありません。テキストのキャプチャとテキストの削除、選択範囲の開始/終了への移動、およびここで説明されている他の多くのことはできますが、HTML を取得することはできません。

問題の大部分は、これがスタンファード仕様の一部ではないことです (このリンクを参照してください)。もう 1 つの理由は、ブラウザ間で一貫性がないか、IE7/8 でサポートされていないことです。

本当にこれを行う必要がある場合は、範囲選択から詳細情報を取得する方法のいくつかの非標準ベースの例をここで見つけることができます - Get a range's start and end offset's relative to its parent container

于 2013-05-19T17:54:04.537 に答える