Тема: JS (ie): похоже перестал работать код ...selection.createRange().text
Коллеги, есть предположение, что либо после обновления IE11 перестал работать много лет назад написаный javascript-код получения с web-страницы выделеного текста, либо где-то дурак, но не пойму где .
Т.е. код типа такого:
javascript
var parentwin = external.menuArguments; // получаем объект окна
var doc = parentwin.document; // получаем объект документа
var sel = doc.selection.createRange().text; // получаем текст выделения
Сей код у меня встречается во многих html-примочках, работающих в качестве контекстного меню в IE, т.е. на некой web-странице по правой клавише мыши вызываешь различные скрипты применяемые к выделенному тексту (скан машины / поиск у/з в AD / конвертации текста / набор телефона и т.п.).
Начали жаловаться, что перестало работать, а, т.к. недавно было централизованное обновление на win-7 IE (11.0.9600.17843, update безопасности: 11.0.20) - грешу пока на него.
Пошаговое выполнение кода дает всегда на последней строке (... selection.createRange().text) неопределенное значение, вернее - вылет на catch() в блоке try{}.
Как ни странно, но проблему обошел "костылём" - вызовом аналогичного функционала, но написанного на vbscript, т.е. добавил vbs-функцию и вызываю ее из своего js-кода.
vbscript
Function uf_htmlGetSelection() ' 08.08.2017 получение из вызвавшего html-документа выделенного текста'
Dim ret
ret = window.external.menuArguments.document.selection.createRange().text
uf_htmlGetSelection = Trim( ret )
END FUNCTION
Прийдется попереписывать утилитки на vbs-костыль, но непонятно само происхождение проблемы.
Какие-то идеи есть? Кто-то с аналогичным сталкивался?