javascript - 如何在ie11里使用a连接创建动态下载文件流?

查看:416
本文介绍了javascript - 如何在ie11里使用a连接创建动态下载文件流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

下面的函数,在其他浏览器里可以下载一个txt文件,但是在ie11里跳转到一个空白页面。文件被url编码后放在了地址栏。没有触发下载。请问怎么才能在ie11里也触发下载文件?

完整项目地址:https://github.com/wangduandu...

    this.downloadLog = function() {
        var file = "data:text/plain;charset=utf-8,";
        var logFile = self.getLog();
        var encoded = encodeURIComponent(logFile);
        file += encoded;
        var a = document.createElement('a');
        a.href = file;
        a.target   = '_blank';
        a.download = self.formatTimestamp()+ '-' + self.logFilename;
        document.body.appendChild(a);
        a.click();
        a.remove();
    };

解决方案

查了资料,可以使用微软独家的msSaveBlob, 这个方法支持ie10及以上。

var downloadFileName = self.formatTimestamp()+ '-' + self.logFilename;

        if(window.navigator.msSaveBlob){
            // for ie 10 and later
            try{
                var blobObject = new Blob([self.output]); 
                window.navigator.msSaveBlob(blobObject, downloadFileName); 
            }
            catch(e){
                console.log(e);
            }
        }
        else{
            var file = "data:text/plain;charset=utf-8,";
            var logFile = self.output;
            var encoded = encodeURIComponent(logFile);
            file += encoded;
            var a = document.createElement('a');
            a.href = file;
            a.target   = '_blank';
            a.download = downloadFileName;
            document.body.appendChild(a);
            a.click();
            a.remove();
        }

这篇关于javascript - 如何在ie11里使用a连接创建动态下载文件流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆