Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打开自定义创建的.ics文件时,Iphone中safari的奇怪行为_Javascript_Jquery_Html_Icalendar - Fatal编程技术网

Javascript 打开自定义创建的.ics文件时,Iphone中safari的奇怪行为

Javascript 打开自定义创建的.ics文件时,Iphone中safari的奇怪行为,javascript,jquery,html,icalendar,Javascript,Jquery,Html,Icalendar,我正在用javascript创建自定义的.ics文件。当我尝试在桌面上打开它时,效果很好,但当我在Iphone上用safari打开它时,它会有一种奇怪的行为,它会打开一个新屏幕将事件添加到日历中,但它会立即关闭。 见视频: 代码如下: HTML: 我正在使用图书馆: :从自定义数据生成.ics文件。还支持谷歌日历、雅虎日历、Outlook日历 escape()现在不推荐使用,您应该改用encodeURI() iCal场景: 对于大型设备浏览器,我下载正在使用的.ics文件: const

我正在用javascript创建自定义的.ics文件。当我尝试在桌面上打开它时,效果很好,但当我在Iphone上用safari打开它时,它会有一种奇怪的行为,它会打开一个新屏幕将事件添加到日历中,但它会立即关闭。 见视频:

代码如下:

HTML:

我正在使用图书馆: :从自定义数据生成.ics文件。还支持谷歌日历、雅虎日历、Outlook日历

escape()现在不推荐使用,您应该改用encodeURI()

iCal场景:

  • 对于大型设备浏览器,我下载正在使用的.ics文件:

       const icalendar = new ICalendar(this.config);
       icalendar.download();
    
这将下载.ics文件,当您打开它时,可以将其添加到默认日历中

  • 对于我正在使用的移动设备浏览器

       const icalendar = new ICalendar(this.config);
       window.open('data:text/calendar;charset=utf8,' + encodeURI(icalendar.render()));
    

icalendar.render()生成.ics文件,它看起来是这样的:

您是否尝试使用第三方工具生成.ics文件,并比较它是否与您的相同?您是否需要
escape()
?更新:我已经在一个JSFIDLE中测试了您的代码,一直到在BrowserStack上测试iOS7 Safari,它仍然有效。但是,我可以看到,您的ICS字符串在最末尾缺少一个尾随
END:VCALENDAR
。如果你加上它,这能解决你的问题吗?@Terry这正是我所做的。我将.ics文件的内容复制粘贴到我的js中。我试着补充你说的话,但仍然不起作用。尽管在多次测试之后,它有时工作得很完美,有时表现得和我发送的视频一样。当我使用你提到的网站并从那里下载ics文件时,它总是有效的,所以我真的不确定我错过了什么here@Terry在你送的小提琴上也有同样的行为。请看:奇怪的是,当我从apps.marudot.com/ical下载文件时,它没有要求我允许日历邀请。
   const icalendar = new ICalendar(this.config);
   icalendar.download();
   const icalendar = new ICalendar(this.config);
   window.open('data:text/calendar;charset=utf8,' + encodeURI(icalendar.render()));