无法获取未定义或空引用的属性“createRange”

时间:2013-11-03 00:24:24

标签: javascript

以下代码在我升级到Windows 8.1 / Internet Explorer 11之前运行良好,现在抛出错误:“无法获取未定义或空引用的属性'createRange'”

var SelectedData = window.external.menuArguments.document.selection.createRange().text;

是否有修复/解决方法?

* 问题已在下方更新,但新代码仍无效....

<html><head><title>-</title><script type="text/JScript">
function Launch()
{
var TheSelection = document.getSelection();
if(TheSelection != null)
{

.... do  a bunch of stuff

}
window.close();
}
</script></head><body onload="Launch();" </body></html>

我也试过了 window.getselection; window.getselection(); 。window.getselection()的ToString();

这些似乎都不起作用...... ???

3 个答案:

答案 0 :(得分:18)

The documentation for document.selection在顶部说:

  

不再支持选择。从Internet Explorer 11开始,使用getSelection。有关信息,请参阅兼容性更改。

document.selection.createRange().text更改为document.getSelection()

问题正是我所预测的。您在null或未定义的引用上调用createRange()。具体来说,document.selection未定义。错误消息确切地说错了。

答案 1 :(得分:0)

这真的不是很多上下文,但一般来说,你的错误信息意味着你没有做到这一点:

var SelectedData;
var selection = window.external.menuArguments.document.selection;
if(selection != null)
{
  SelectedData = selection.createRange().text;
}

当您尝试进行选择时,未进行任何选择,因此选择为空。当一个对象为null时,你无法查询它,因为包含所需信息的结构不存在。

答案 2 :(得分:0)

对于此调整,您可以找到:

b=document.selection.getSelection()

或类似的东西 然后,您可以使用下面的代码来实现这一目标:

b=typeof document.selection!=="undefined"?document.selection.getSelection():null