10

以下代码在我升级到 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();

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

4

3 回答 3

18

的文档document.selection在顶部说:

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

更改document.selection.createRange().textdocument.getSelection()

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

于 2013-11-03T19:16:40.900 回答
0

这实际上不是很多上下文,但一般来说,您的错误消息意味着您没有这样做:

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

当您尝试获取选择时,没有进行任何选择,因此选择为空。当对象为空时,您无法查询它,因为包含您需要的信息的结构不存在。

于 2013-11-03T00:43:35.143 回答
0

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

b=document.selection.getSelection()

或者类似的东西然后你可以使用下面的代码来尝试它:

b=typeof document.selection!=="undefined"?document.selection.getSelection():null
于 2019-01-03T18:53:00.763 回答