猿问

jQuery 下载适用于 Chrome 而不是资源管理器

我正在使用以下代码将文件下载到桌面:


    $('#resourceTable tbody').on( 'click', '#getFile', function () {


        var data = resourceTable.row( $(this).parents('tr') ).data();

        var a = document.createElement('a');

        a.href = data.resourseImage


        if (data.resourseImageType === "pdf"){

            a.download = 'myfile.pdf';

        }else{

            a.download = 'myfile.jpg';

        }


        document.body.append(a);

        a.click();

        a.remove();

    });

它适用于 Chrome。在资源管理器中,不会发生下载并给出控制台消息:


SCRIPT438: Object doesn't support property or method 'append'

resourceAdmin.js (559,10)

第 559 行是:


document.body.append(a);

我试过了:


$("document.body").append($(a));

a.click();

$(a).remove();

在 Chrome 中工作。在资源管理器中(没有错误)按钮变成蓝色;但是,下载弹出窗口不会出现


Qyouu
浏览 171回答 3
3回答

繁星点点滴滴

我现在发现,它适用于 Chrome 和 IE:http://danml.com/download.html亲切的问候,

慕沐林林

使用element.appendChild(newElement);或覆盖 jquery 附加$('#resourceTable tbody').on( 'click', '#getFile', function () {        var data = resourceTable.row( $(this).parents('tr') ).data();        var a = document.createElement('a');        a.href = data.resourseImage        if (data.resourseImageType === "pdf"){            a.download = 'myfile.pdf';        }else{            a.download = 'myfile.jpg';        }        if (navigator.userAgent.search("Edge") > -1) {            document.body.append = document.body.appendChild;                      }        document.body.append(a); // or use appendChild        a.click();        a.remove();    });

交互式爱情

IE 不支持以这种方式下载。您应该首先将数据转换为 blob 并使用特定于 IE 的函数。在第559行之前。检查它是否是IE浏览器,然后使用IE支持的其他方法下载,如下所示-var blob = new Blob([data.resourseImage], {type:  "text/plain;charset=utf-8;"});if (navigator.msSaveBlob) {    return navigator.msSaveBlob(blob, fileName);} else {    $("document.body").append($(a));    a.click();    $(a).remove();}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答