1.safair到12版本为止都不支持a.download属性
2.如果用ajax方式res.blob(), filename会丢失,后缀名会根据Content-type会有不同表现。application/pdf,能正确设置后缀,如果Content-type:application/octet-stream不能正确设置后缀。
3.直接写a标签,如果有Content-Disposition属性并传了filename,会优先这个filename保存,但是Content-type:application/octet-stream ,同样还是打开不了。
4.safair处理不了Content-type:application/octet-stream的blob链接
file-saver.js
总结:
1.如果是非safair环境,会优先以a标签download属性进行处理,
如果是string,会直接设置a标签的download,再通过ajax获取blob,然后再进到saveAs函数里。
如果是blob对象,将a标签的url设置为blob url
3.如果是safair环境,不会使用a标签,而是会以popup window的href处理blob url和直接传进来的string,如果获取的blob对象是
P.S.
搭配ajax异步请求后,如果直接使用saveAs,safair会阻止打开新窗口,其实saveAs可以传第四个参数,在异步请求之前先打开一个新窗口再传入saveAs。