1

我正在使用应该跨浏览器兼容的纯 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);
4

1 回答 1

3

您需要在要使用它的文档中创建范围。我认为您已经根据 jsfiddle 演示解决了这个问题,但是例如该行

var range = document.createRange();

应该

 var range = el.ownerDocument.createRange();
于 2012-10-26T14:46:53.847 回答