用户突然收到“XPath Evaluator is Undefined”错误

时间:2014-08-13 17:47:39

标签: internet-explorer xpath webpage

这是来自我支持的系统的用户的问题。该系统是基于Web的企业应用程序。我应该注意,我不是开发者。我不是要求他们支持这一点的原因是因为他们以前的支持已经是"我们不需要解决这个问题,我们只是选择不支持它"我真的怀疑是否少了他们的开发人员之一会理解这个问题。

用户正在尝试访问此网页中的某项功能(具体而言,他们正在尝试为业务参与创建一个条目)。此函数生成一个新窗口,用于创建此新事物,侧面有多个选项卡以访问不同的部分。虽然窗口打开正常,并且标签显示均匀,但默认情况下“常规”和“标签页面是空白的,弹出窗口说" XPath评估器是未定义的"出现在中间。关闭该错误消息后窗口没有响应。

用户已经使用IE 10,升级到IE 11,并且随着它的运行将其降级到IE 10。她说她在Skype停止运行之前安装了Skype,但在卸载Skype之后又没有让它再次运行。没有缓存清除或重新启动帮助她。我无法使用机器上阳光下的每个浏览器重新创建问题:

  • Firefox 33 + FireIE *
  • Firefox 31 + FireIE *
  • IE 11
  • IE 10 **
  • IE 9 **
  • IE 8 **
  • IE 7 **
  • IE 6 **
  • 火狐**
  • 铬**
  • 歌剧**

* FireIE是一个FF插件,基本上可以在Firefox中模拟IE。我有它强制IE 10标准。

** IE 11的开发模式。

问题在于她工作站上的某些内容使网页代码突然出现错误。关于什么破坏,为什么破产,以及可能的解决方法的任何想法?按时间顺序来说,Skype似乎是罪魁祸首,我对Skype随机破解随机程序并不陌生,但老实说我不知道​​Skype怎么可能破坏像这样的网络应用程序。我无法找到调试控制台中出现的代码。哎呀,我甚至无法弄清楚正在使用哪个版本的XPath。

编辑:管理以获取出现的代码导致问题:

function getSelectXMLNodes(doc, path) { 
    var xpath = new XPathEvaluator(); 
    var result = xpath.evaluate(path, doc, doc.createNSResolver(doc.documentElement), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);  

    var nodeList = new Array(result.snapshotLength); 

    for (var i = 0; i < result.snapshotLength; i++) { 
        nodeList[i] = result.snapshotItem(i); 
    } 
    xpath = null; 
    result = null; 
    return nodeList; 
}

3 个答案:

答案 0 :(得分:0)

我不知道具体是什么原因导致它在此时停止工作,但从历史上看,IE还没有支持XPathEvaluator。

根据this post,“您可以在DOM Document对象上使用selectNode()和selectSingleNode()(仅限IE)。”

答案 1 :(得分:0)

需要将兼容模式更改为IE 10

只需在Head

中添加此行
<meta http-equiv="X-UA-Compatible" content="IE=10" />

清除缓存浏览器并重试!有用! :)

答案 2 :(得分:0)

此错误消息...

ReferenceError: 'XPathEvaluator' is undefined

...表示在 Javascript 中进行 XML处理时出现 ReferenceError

在《面向Web开发人员的专业Javascript》 作者@nzakas提到的书中,浏览器不支持XPathEvaluator。在这种情况下,用户应该在 DOM文档对象上使用selectNode()selectSingleNode()(仅限IE)。


历史

根据文章,在升级到Resolving the Error "XPathEvaluator’ is undefined"后,在 Microsoft Dynamics CRM 2011 中经常观察到这个XPathEvaluator is undefined脚本错误。进一步的调查显示,任何包含ClientGlobalContext.js(用于获取父表单的上下文)的HTML资源都将引发错误SCRIPT5009: ‘XPathEvaluator’ is undefined


解决方案

解决方案是将以下行添加到引用该特定 JS 文件的自定义HTML文档的<head>中:

<meta http-equiv="X-UA-Compatible" content="IE=10" />

脚本的这一行用于强制浏览器以模式运行Web资源。

警告:缺点是此功能将在(已被Microsoft新发布的 Internet Explorer 替代产品)中折旧。