2

window.getSelection()の値を保存しようとしていますが、ユーザーが別の選択を選択すると、この値が変わるようです。

以下のコードでは、最初のユーザーの選択を保存しています。次に、フォームを作成し(少し時間がかかります)、フォームの作成が完了したら、ユーザーの選択をフォームに入力します。これで、フォームの作成中に、ユーザーが他のテキストを選択できるようになり、選択変数に格納されているオブジェクトが変更されました。選択の値が変更されないようにするにはどうすればよいですか?

var selection = window.getSelection();

createForm(function() {
    fillInForm(selection);
});

編集-フォームは選択されたテキストの位置を参照するため、選択のDOM構造を維持する必要があります。

4

1 に答える 1

2

この関数はSelectionオブジェクトgetSelectionを返します。ドキュメントごとに存在できる選択オブジェクトは1つだけであるため、ユーザーが新しい選択を行う場合は、選択に関連付けられた範囲を変更する必要があります。

ユーザーエージェントは、ユーザーがアクティブなドキュメントの選択を変更できるようにする必要があります。ユーザーが選択範囲に変更を加えた場合、ユーザーエージェントは適切な開始と終了を使用して新しい範囲を作成し、選択範囲をこの新しい範囲に関連付ける必要があります(既存の範囲を変更しないでください)。

[...]

ユーザーが選択範囲を変更するか、スクリプトがaddRange()を呼び出す場合、この仕様の他の場所で必要とされるように、選択範囲を新しい範囲オブジェクトに関連付ける必要があります。

http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections

于 2012-03-10T20:30:30.000 に答える