I\'m generating a .ics calendar entry from JS, next I open it using a data-URI:
window.open(\"data:text/calendar;charset=utf8,\" + escape(icsMSG));
>
Answering my own question:
The problem was not in the .ics output itself, rather it was in IE and Opera not treating the js-generated output as a file to download. To enforce such a download, is only possible from a server-side script.
I ended up recoding my logic to output the .ics file on the server-side, and by enforcing these headers:
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=cal.ics');
It was a painful restructuring, but now it works across browsers.