我正在使用纯html和javascript制作便携式文档,这些文档应该是跨浏览器兼容的。我将搜索/突出显示框和结果页面放在不同的框架中。它在ie,ff和chrome(使用disable-web-security参数)中工作正常但在Opera中引发错误。我不知道为什么会这样,以及如何解决这个问题。
感谢任何帮助。
Opera抛出异常的函数:
function selectElementContents(el) {
if (window.getSelection && document.createRange) {
var sel = window.getSelection();
var range = document.createRange();
range.selectNodeContents(el);
sel.removeAllRanges();
sel.addRange(range);
} else if (document.selection && document.body.createTextRange) {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.select();
}
}
Opera的错误控制台:
Uncaught exception: DOMException: WRONG_DOCUMENT_ERR
Error thrown at line 56, column 8 in selectElementContents(el) in xy.js:
range.selectNodeContents(el);
答案 0 :(得分:3)
您需要在文档中创建要使用它的范围。我认为你已经基于jsfiddle演示解决了这个问题,但是例如行
var range = document.createRange();
应该是
var range = el.ownerDocument.createRange();