getRangeAt () - ошибка, если текст не выделен - PullRequest
2 голосов
/ 09 июля 2010

Я использую этот простой код Javascript для получения текста, который был выбран на веб-странице:

var userselection = window.getSelection(); //user selection will be a Selection-Object
var rangeObject = userselection.getRangeAt(0); 

Код работает нормально, если выделен текст. Если я просто нажму на текст, который можно выделить, я получу объект диапазона, как и ожидалось.

Но если я не выбираю и не нажимаю, Firefox выдает эту ошибку:

uncaught exception: [Exception... "Component returned failure code: 0x80070057
(NS_ERROR_ILLEGAL_VALUE)  [nsISelection.getRangeAt]" nsresult: "0x80070057 
(NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: file:///home/jan/Webprojekte/test-range
selection.html# :: who :: line 16" data: no]

Есть ли чистый способ предотвратить ошибку, но при этом уведомить пользователя, что текст не был выбран?

Ответы [ 2 ]

8 голосов
/ 09 июля 2010

Да: сначала проверьте свойство rangeCount выбора. Если это ноль, не звоните getRangeAt().

2 голосов
/ 13 апреля 2013

У меня такая же проблема. но в моем случае RangeCount был равен 1. Случайно я нашел способ решить проблему

вам нужно установить функцию тайм-аута, и тогда все будет хорошо

setTimeout(function(){
    var userselection = window.getSelection(); //user selection will be a Selection-Object
    var rangeObject = userselection.getRangeAt(0);
},100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...