1

我最近尝试包含 wgxpath 来修补 IE 9 缺乏适当的 X-Path 支持,但在尝试使用命名空间时收到一条奇怪的错误消息(«错误:错误令牌::»)。

有人尝试将它用于从 XHR 响应中获得的 XML 文档吗?我正在尝试以下操作:

function evaluate(node, expression, namespaces) {
    var resolver = null;

    if(namespaces) {
        resolver = function(prefix) { return namespaces[prefix]; };
    }
    else if(document.createNSResolver) {
        resolver = document.createNSResolver(node);
    }

    var results = document.evaluate(expression, node, resolver, XPathResult.ANY_TYPE, null);

    var value = null;
    switch(results.resultType) {
        case XPathResult.NUMBER_TYPE:
            value = results.numberValue;
            break;

        case XPathResult.STRING_TYPE:
            value = results.stringValue;
            break;

        case XPathResult.BOOLEAN_TYPE:
            value = results.booleanValue;
            break;

        case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
        case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
            value = [];
            var result = null;
            while(result = results.iterateNext()) {
                value.push(result);
            }
            break;

        case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
        case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
            value = [];
            for(var index = 0; index < results.snapshotLength; ++index) {
                value.push(results.snapshotItem(index));
            }
            break;

        case XPathResult.ANY_UNORDERED_NODE_TYPE:
        case XPathResult.FIRST_ORDERED_NODE_TYPE:
            value = results.singleNodeValue;
            break;
    }

    return value;
};

使用 IE,在从静态 SVG 文件获取的 XML 文档上评估“/svg:svg/svg:title/text()”时,它会失败。

我在这里做错了吗?

另外,我注意到它适用于 Chrome,但不适用于 Firefox。我收到以下错误消息:«WrongDocumentError:节点不能在创建它的文档之外的文档中使用»。

由于 wgxpath 安装在窗口上,我不确定如何为传入的 XHR XML 文档设置它...

4

0 回答 0