Значение window.getSelection () изменяется во время обратного вызова - PullRequest
1 голос
/ 11 марта 2012

Я пытаюсь сохранить значение window.getSelection (), но это значение может измениться, если пользователь выберет другой выбор.

В моем коде ниже я сохранил исходный выбор пользователя.Затем я создаю свою форму (которая занимает немного времени), и когда форма заканчивается, я заполняю форму с выбором пользователя.Теперь, во время создания формы, пользователь может выбрать другой текст, и теперь объект, сохраненный в моей переменной выбора, изменился.Как можно предотвратить изменение значения выделения?

var selection = window.getSelection();

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

РЕДАКТИРОВАТЬ - мне нужно сохранить структуру DOM выбора, поскольку форма ссылается на позицию выделенного текста.

1 Ответ

1 голос
/ 11 марта 2012

Функция getSelection возвращает объект Selection . В документе может быть только один объект выбора, поэтому диапазон, связанный с выбором, должен измениться, если пользователь делает новый выбор.

Пользовательский агент должен позволять пользователю изменять выбор активного документа. Если пользователь вносит какие-либо изменения в выборку, пользовательский агент должен создать новый диапазон с подходящим началом и концом и связать выбор с этим новым диапазоном (не изменять существующий диапазон).

[...]

Если пользователь изменяет выделение или скрипт вызывает addRange (), выделение должно быть связано с новым объектом диапазона, как это требуется в других местах данной спецификации.

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

...