У меня есть веб-приложение, использующее Accusofts Prizm ActiveX Viewer для просмотра и редактирования PDF-файлов в Интернете. Этот продукт, кажется, отлично работает в любом браузере включая край, кроме, как вы уже догадались, Internet Explorer 11. Я искал в глубинах Интернета, пытаясь найти решение этой проблемы, и не нашел никаких полезных результатов.
Я получаю ошибку SCRIPT5022: SyntaxError
без дополнительной информации о полученной ошибке, которая переводит меня к следующей функции, где 3-я строка является получателем ошибки.
function createIconMap(iconText) {
var parser = new DOMParser();
var iconDoc = parser.parseFromString(iconText, 'image/svg+xml');
Я запускал и сравнивал IE с хромом, и оба инспектора сообщают мне, что ведут себя одинаково. Однако 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);
}
Пожалуйста, проверьте содержимое файла (pdf, xml), возможно, файл содержит описание ошибки. Более подробно вы можете обратиться к этот образец.
Кроме того, согласно эта ветка, вы можете попробовать использовать ActiveX для анализа документов.
Итак, вот что выяснилось с течением времени. С тех пор я узнал, что продукт Accusoft не работает с IE 11 (64-разрядная версия), которая является единственной версией, доступной в Windows 8+. Я также определил, что установка следующего в Try/Catch
поможет ему работать часть времени
var parser = new DOMParser();
var iconDoc = parser.parseFromString(iconText, 'image/svg+xml');