Opera从selectNodeContents抛出DOMException

时间:2012-10-22 09:00:50

标签: javascript dom opera

我正在使用纯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);

1 个答案:

答案 0 :(得分:3)

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

var range = document.createRange();

应该是

 var range = el.ownerDocument.createRange();