SCRIPT5022:IE 11

时间:2018-10-29 18:58:11

标签: javascript internet-explorer

我有一个使用Accusofts Prizm ActiveX Viewer的网络应用程序,可以在线查看和编辑PDF。该产品似乎在包括边缘浏览器在内的所有浏览器中都可以正常使用,除非您猜对了,Internet Explorer11。我一直在互联网的深处进行搜索,以寻求解决方案,但没有找到有用的结果。

我收到的错误是SCRIPT5022: SyntaxError ,没有关于收到的错误的进一步信息,这使我进入以下功能,第三行是错误的接收者。

function createIconMap(iconText) { var parser = new DOMParser(); var iconDoc = parser.parseFromString(iconText, 'image/svg+xml');

我已经运行了IE,并将其与chrome进行了比较,两位检查员都通知我它们的行为相同。 IE在此功能上停滞不前,Chrome继续显示PDF。

请在下面查看完整的JS

// createIconMap
// Given an SVG as a string, parse it and extract the content of all
// symbol elements with an id.
function createIconMap(iconText) {
    var parser = new DOMParser();
    var iconDoc = parser.parseFromString(iconText, 'image/svg+xml');
    var icons = iconDoc.getElementsByTagName('symbol');
    function attributeReducer(memo, attr) {
        return memo + ' ' + attr.name + '="' + attr.value + '"';
    }

    function childReducer(memo, node) {
        if (node.nodeType !== 1) {
            return memo;
        }

        // Build the DOM string of this node. Unfortunately, IE does
        // not implement innerHTML, outerHTML, or any of the other
        // content methods for SVG Elements and Node elements from
        // the DOMParser.
        return memo + '<' + node.tagName + ' ' +
            _.reduce(node.attributes, attributeReducer, '') +
            '>' +
            (node.childNodes.length ? reduceNode(node) : '') +
            '</' + node.tagName + '>';
    }

    function reduceNode(node) {
        return _.reduce(node.childNodes, childReducer, '');
    }

    _.forEach(icons, function (icon) {
        var id = icon.getAttribute('id');

        if (!id) {
            return;
        }

        ICON_MAP[id] = reduceNode(icon);
    });
}

    function Viewer(element, options) {

        this.$dom
            .html(_.template(options.template.viewer)(_.extend({
                reasons: this.redactionReasonsExtended,
                annotationsMode: options.annotationsMode,
                downloadFormats: downloadFormats,
                annotationFormats: annotationFormats
            }, PCCViewer.Language.data)))
            .addClass('pccv')
            .show();

        createIconMap(options.icons);
}

2 个答案:

答案 0 :(得分:0)

请检查文件(pdf,xml)的内容,可能是该文件包含错误描述。 有关更多详细信息,请参阅this sample

此外,根据this thread,您可以尝试使用ActiveX解析文档。

答案 1 :(得分:0)

因此,随着时间的流逝,这就是发现的原因。从那以后,我发现Accusoft产品无法在IE 11 (64 bit version)上运行,这是Windows 8+上唯一可用的版本。我还确定将以下内容放在Try/Catch中将有助于使其在部分时间内工作

var parser = new DOMParser();
var iconDoc = parser.parseFromString(iconText, 'image/svg+xml');