У меня была такая же проблема с простым текстовым полем. У меня есть кнопка, которая тянет выделенное значение и ajax отправляет его на сервер. Но когда фокус снят с кнопки, значение выделения window.getSelection().toString()
остается пустым.
Мне удалось решить эту проблему, просто вернув фокус к текстовой области. Дешевое решение я знаю, но оно работает. Я использую jQuery, но, вероятно, не составит труда создать версию ванильного javascript.
$holder.on('click', '.name-add_option input', function(e)
{
// Make sure the button doesn't do something silly like submit the form.
e.preventDefault();
// Set the focus to the text area I expect the highlighted text to be.
$holder.find('.name-field textarea').focus();
// Copy highlighted text.
highlight = window.getSelection().toString();
// Do stuff with highlighted data.
});
$holder
- это дескриптор jquery для div, стилизованный как модальное окно в моем контексте.