Document.evaluate 对于没有 namespaceURI 的文档,Microsoft Edge 会崩溃

Document.evaluate for documents without namespaceURI crashes Microsoft Edge

在 Windows 10 build 10240 的 Microsoft Edge 上测试。已在 build 10586 中修复。

剧情简介

运行 XMLDocument.prototype.evaluatenamespaceURI 设置为 null 的文档上使 Microsoft Edge 中的当前选项卡进程崩溃,使该选项卡的开发人员工具无响应,将调试信息发送到 watson.telemetry.microsoft.com,并强制重新加载页面。

复制

要复制,在 Microsoft Edge 中打开任何网站,按 F12 打开开发人员工具,select 控制台,运行 这 3 行 javascript:

var doc = document.implementation.createDocument(null, null, null);
var node = doc.createElement('A');
doc.evaluate('B', node, doc.createNSResolver(doc), 9, null);

解决方法

访问baseURI属性之前的上下文节点运行evaluate.

var doc = document.implementation.createDocument(null, null, null);
var node = doc.createElement('A');

node.baseURI; // Edge workaround 

doc.evaluate('B', node, doc.createNSResolver(doc), 9, null);