2012-03-10 2 views
1

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

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

var selection = window.getSelection(); 

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

EDIT - Мне нужно сохранить структуру DOM для выбора, поскольку форма ссылается на позицию выбранного текста.

+0

вы можете поставить некоторые больше кода? может быть способ добавления закрытия, но зависит от остальной части вашего кода. – Guumaster

ответ

1

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

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

[...]

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

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

+0

Другими словами, если пользовательский агент выбирает другой диапазон, моя первоначальная переменная выбора теперь будет удерживать этот новый диапазон? Как я могу сохранить свой первоначальный выбор? Я думал о создании временного диапазона только для хранения исходных данных, но не будет ли он переопределяться после того, как выбор снова изменится? – Jon

+0

@ icu222much Я не совсем уверен ... вы можете сериализовать его на строку или попробовать «клонировать» ее с помощью объекта Object.create –

Смежные вопросы