2013-05-01 3 views
1

У меня есть код JavaScript, который запрашивает объект Selection, используя window.getSelection(). Если я сделаю выбор, то window.getSelection() успешно вернет параметры выбора, однако, если я сделаю недействительным выбор, щелкнув в любом месте на экране, window.getSelection() продолжит давать мне старый объект Selection.Может ли окно объекта выбора быть недействительным?

Я не строю что-то большое, поэтому я не хочу устанавливать библиотеку, такую ​​как Rangy или что-то еще. Как я могу аннулировать объект выбора? Кстати, я использую Firefox 20.0.1 для этого скрипта.

Пожалуйста, советую!

ответ

1

Если вы щелкнете в другом месте текста, getSelection не даст вам старый объект выделения, а пустой. Вы можете проверить длину selection.toString().

var selectionIsNotEmpty = selection.toString().length>0; 

На WebKit браузерах, изменения типа вашего выбора также от «Range» до «CARET» или «Нет».

Demonstration (выбрать что-то выберите в другом месте)

+0

Как вы проверяете для типа объекта Selection? Я использовал instanceof, но тип Caret не существует. – hiddenUser

+0

Я использую свойство 'type'. См. Демонстрацию. Вы также можете проверить длину выделения. –

+0

Тип свойства отлично работает на Chrome, но он не определен в Firefox. Вы что-то кросс-браузер? – hiddenUser

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