Я новичок в StackOverflow и очень новичок в Javascript, поэтому я прошу прощения, если есть очевидная проблема с кодом или моим постом. Я не обязательно пытаюсь сделать это самым лучшим или самым красивым способом на данный момент, просто запустите этот проект до окончания моей стажировки. Я работал над тем, чтобы это https://github.com/commonpike/add-to-calendar-buttons добавление к календарю работало с Internet Explorer, который не совместим с Encode: URI или атрибутом HTML «Скачать».
С помощью комментариев к проекту и других исправлений аналогичных проблем, которые я видел, я ДУМАЛ, что мог бы добавить этот код в соответствующие места и заставить все работать. Функция календаря уже является частью кода, но я включил ее, потому что она затронута.
var href2 = (
'BEGIN:VCALENDAR',
'VERSION:2.0',
'BEGIN:VEVENT',
'URL:' + document.URL,
'DTSTART:' + (startTime || ''),
'DTEND:' + (endTime || ''),
'SUMMARY:' + (event.title || ''),
'DESCRIPTION:' + (event.description || ''),
'LOCATION:' + (event.address || ''),
'UID:' + (event.id || '') + '-' + document.URL,
'END:VEVENT',
'END:VCALENDAR');
if ((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) {
return '<a class="' + eClass + '" href="javascript:msDownloadCalendar(\'' +
href2 + '\')">' + calendarName + '</a>';
} else {
return '<a class="' + eClass + '" download="' + CONFIG.texts.download + '" href="' +
href + '">' + calendarName + '</a>';
}
},
exports.msDownloadCalendar = function(url) {
if ((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) {
var blob = new Blob([href2], {
type: 'text/calendar;charset=utf-8'
});
window.navigator.msSaveOrOpenBlob(blob, 'download.ics');
}
};
exports.addToCalendar = function(params) {
if (params instanceof HTMLElement) {
//console.log('HTMLElement');
return parseCalendar(params);
}
if (params instanceof NodeList) {
//console.log('NodeList');
var success = (params.length > 0);
Array.prototype.forEach.call(params, function(node) {
success = success && addToCalendar(node);
});
return success;
}
sanitizeParams(params);
if (!validParams(params)) {
console.log('Event details missing.');
return;
}
return generateMarkup(
generateCalendars(params.data),
params.options.class,
params.options.id
);
};
Это, однако, не решает проблему. Хотя это не влияет на функциональность в других браузерах, в IE он полностью разбивается, так как отображаются только заголовки, а консоль говорит, что функция addtocalendar не определена. «Addtocalender» регистрирует только как неопределенные в IE, поэтому я должен предположить что-то, что вводится в игру
if ((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true ))
является виновником.
Большое спасибо всем в сообществе, кто может дать мне некоторую информацию и помочь мне в этом. Я прижал голову к стене с тем, насколько смог, используя свой текущий набор навыков, и многому научился, но боюсь, что достиг своего текущего предела.