У меня есть веб-приложение, использующее Accusofts Prizm ActiveX Viewer для просмотра и редактирования PDF-файлов в Интернете. Похоже, этот продукт отлично работает в каждом браузере , включая edge , за исключением, как вы уже догадались, Internet Explorer 11. Я искал в недрах интернета, чтобы попытаться найти решение этой проблемы, и не нашел ничего полезного результаты.
Я получаю ошибку SCRIPT5022: SyntaxError
без дополнительной информации о полученной ошибке , которая возвращает меня к следующей функции, где 3-я строка является получателем ошибки.
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);
}