如果文本可能在其中一个框架(或 iframe)内,有没有办法在 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
所以这适用于跨浏览器(虽然不是很漂亮)。
问题是当文档包含框架或 iframe 时。框架有自己的文档,所以仅仅使用上面的代码是不够的。可能会遍历框架树并在其中一个中搜索选定的文本,但是通常框架可以包含来自不同域的内容,因此即使我要遍历搜索中的根文档的所有框架和所有子框架等选定的文本我没有权限访问他们的 HTML,对吧?所以我无法获得他们选择的文本。
即使页面包含框架,是否有一种(简单)可靠的方法可以在网页上找到所选文本?
谢谢