Есть ли способ найти выделенный текст в документе HTML, если текст может находиться в одном из его фреймов (или фреймов)?
Если в документе нет фреймов, все просто:
var text;
if (document.getSelection) {
// Firefox and friends
text = document.getSelection();
} else if (document.selection) {
// IE
text = document.selection.createRange();
}
if (text == undefined || text == '') {
// Iterate over all textarea elements and see if one of them has selection
var areas = document.getElementsByTagName('textarea');
for(var i = 0; i = areas.length; i++) {
if(areas[i].selectionStart != undefined &&
areas[i].selectionStart != areas[i].selectionEnd){
text = areas[i].value.substring(areas[i].selectionStart, a[i].selectionEnd);
break;
}
}
}
// Now if document has selected text, it's in text
Так что это работает кросс-браузер (хотя и не очень красиво).
Проблема в том, что документ содержит фреймы или фреймы.
У фреймов есть собственный документ, поэтому простого использования приведенного выше кода недостаточно.
Можно потенциально перебирать дерево фреймов и искать выбранный текст в одном из них, однако в общем случае фреймы могут содержать контент из разных доменов, поэтому даже если бы мне пришлось перебирать все фреймы и все подкадры и т. Д. Корневого документа в поиске выбранного текста у меня не было бы права доступа к их HTML, верно? Поэтому я не смогу получить их выбранный текст.
Существует ли (простой) надежный способ поиска выделенного текста на веб-странице, даже если страница содержит фреймы?
Спасибо