我认为我的问题非常特别。我现在正在做的是创建一个简单的事件列表,您可以点击每个事件添加到您的日历(iCal,Google日历,Live日历等)。为了达到这个目的,我正在使用addToCalentar但是在这段代码中有一些奇怪的东西。
当我选择iCal时,它假设下载一个ics文件,但插件打开一个新的浏览器选项卡显示文件本身。所有其他选项都非常好,因为他们需要在新窗口中打开。但是muy的问题是。如果用户选择“iCal”选项,我在哪里可以修改源代码以便只下载文件?
这是我的HTML:
<div class="addtocal">
<div>01/04/2015 <span title="invite.ics"></span> </div>
</div>
这是我的插件配置:
$('.addtocal').AddToCal({
icalEnabled:true,
vcalEnabled:false,
getEventDetails: function( element ) {
var
dtstart_element = element.find('.dtstart'), start,
dtend_element = element.find('.dtend'), end,
title_element = element.find('.summary'), title,
details_element = element.find('.description'), details,
ics_element = element.find('.ics'), ics;
start = dtstart_element.length ? dtstart_element.attr('title') : new Date();
if(dtend_element.length) {
end = dtend_element.attr('title');
} else {
end = new Date();
end.setTime(end.getTime() + 60 * 60 * 1000);
}
title = title_element.length ? title_element.html() : element.attr('id');
details = details_element.length ? details_element.html() : element.html();
ics = ics_element.attr('title');
// return the required event structure
return {
webcalurl: null,
icalurl: ics,
vcalurl: null,
start: start,
end: end,
title: title,
details: details,
location: null,
url: null
};
},
});
这是引用的插件:
https://github.com/tardate/jquery.addtocalendar/blob/master/jquery.addtocal.js
我正在处理的是更改此方法以确定item.label
是否为iCal我是否可以添加<a download>...</>
但是无效。
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.addtocal", item )
.append( $( "<a></a>" ).text( item.label ) )
.appendTo( ul );
},
答案 0 :(得分:2)
要强制您的浏览器下载文件而不是阅读文件,您可以为其提供FileType
标题,以强制下载。
如果您还没有.htaccess文件,请在您的webroot文件夹中创建一个,然后添加:
AddType application/octet-stream .ics
这将迫使浏览器下载* .ics文件而不是显示它们。