问题描述:谷歌下载功能正常,但是 ie11 下载功能失效。
解决此问题用到的插件:jszip-utils-ie.js,jszip.js,jszip-utils.js 之前使用的是 form 表单进行下载处理,但是这个只使用与谷歌等部分浏览器的下载,不支持 ie。
var form = $(“<form>”); // 定义一个 form 表单
form.attr(“style”, “display:none”);
form.attr(“target”, “”);
form.attr(“method”, “get”); // 请求类型
form.attr(“action”, url); // 请求地址请输入代码
var input1 = $(“<input>”);
input1.attr(“type”, “hidden”);
input1.attr(“name”, “access_token”);
input1.attr(“value”, appconfig.token);
form.append(input1);
$(“body”).append(form); // 将表单放置在 web 中
form.submit();
解决方案
html 需要做兼容 ie 判断
<script type=”text/javascript” src=”../lib/jszip.js”></script>
<script type=”text/javascript” src=”../lib/jszip-utils.js”></script>
<!–[if IE]>
<script type=”text/javascript” src=”js/jszip-utils-ie.js”></script>
<![endif]–>
使用 JSZip 进行兼容性处理:
// 1) get a promise of the content
var promise = new JSZip.external.Promise(function (resolve, reject) {
JSZipUtils.getBinaryContent(url, function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
promise.then(JSZip.loadAsync) // 2) chain with the zip promise
.then(function (zip) {
// return zip.file(“Hello.txt”).async(“string”); // 3) chain with the text content promise
// var zip = new JSZip();
zip.generateAsync({type: “blob”})
.then(function (blob) {
saveAs(blob, mapid + “.zip”);
});
// saveAs(zip,”bb.zip”);
})