这是一个来自我支持的系统用户的问题。该系统是一个基于Web的企业应用程序。我应该注意,我 * 不是 * 它的开发人员。我不要求他们支持这个问题的原因是因为他们以前的支持是“我们不需要修复它,我们只是选择不支持它”,老实说,我怀疑不到他们的开发人员就不会理解这个问题。
用户正在尝试访问此网页中的功能(具体地说,他们正在尝试为业务约定创建条目)。此功能将生成一个用于创建此新内容的新窗口,该窗口沿着有多个选项卡可访问不同的部分。虽然窗口确实正确打开,并且选项卡显示均匀,默认的“常规”选项卡的页面是空白的,中间会弹出一个“XPath求值器未定义”的窗口。除了关闭该错误消息外,该窗口没有响应。
用户有IE 10,升级到IE 11,然后降级回IE 10,它仍然工作。她说,她安装Skype之前,它停止工作,但没有让它再次工作后,她卸载Skype。没有缓存清除或重新启动帮助她。我一直无法重现问题使用每一个浏览器在阳光下我的机器:
- 火狐33 + FireIE*
- 火狐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怎么可能破坏这样一个网络应用程序。2我也没能在我的调试控制台中找到什么代码似乎被破坏了。3见鬼,我甚至不知道使用的是哪个版本的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条答案
按热度按时间7vux5j2d1#
我不知道具体是什么原因导致它在这个时候停止工作,但从历史上看,IE不支持XPathEvaluator。
根据this post,“您可以在DOM文档对象上使用selectNode()和selectSingleNode()(仅适用于IE)。”
iq0todco2#
需要将兼容模式更改为IE 10
我只需要在Head中添加这一行
清除浏览器缓存并重试!它工作!:)
cbeh67ev3#
此错误消息...
...表示在 Javascript 中 * 处理 *XML时 * 出现 * 引用错误 *。
在 Professional Javascript for Web Developers(作者@nzakas)一书中提到,internet-explorer浏览器不支持
XPathEvaluator
。在这种情况下,用户应该在 *DOM Document对象 * 上使用selectNode()
和selectSingleNode()
(仅适用于IE)。历史
根据文章所述,Resolving the Error "XPathEvaluator’ is undefined"在升级到internet-explorer-11后,经常会在 Microsoft Dynamics CRM 2011 中发现此
XPathEvaluator is undefined
脚本错误。进一步的调查显示,任何包含ClientGlobalContext.js
(用于获取父表单的上下文)的HTML资源都将引发错误SCRIPT5009: ‘XPathEvaluator’ is undefined
。溶液
解决方案是将下面一行添加到引用该特定 JS 文件的自定义HTML文档的
<head>
中:注意:缺点是microsoft-edge中的此功能将被淘汰,microsoft-edge是Microsoft最新发布的 Internet Explorer 替代产品。