为什么我的使ICS生成器IE兼容的解决方案使另一个函数“未定义”?

时间:2019-05-24 19:56:03

标签: javascript html icalendar

我是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 ))

罪魁祸首是

非常感谢社区中的任何人,他们可以给我一些意见并帮助我启动并运行它。我已经用我目前的技能尽一切可能将头顶在墙上,并且学到了很多东西,但是担心我已经达到了我目前的极限。

0 个答案:

没有答案