Загрузка jQuery работает в Chrome, а не в Explorer - PullRequest
4 голосов
/ 19 октября 2019

Я использую следующий код для загрузки файла на рабочий стол:

    $('#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();

Работаетв хроме. В проводнике (без ошибок) кнопка становится синей;однако всплывающее окно загрузки не отображается.

Ответы [ 3 ]

0 голосов
/ 20 октября 2019

IE не поддерживает загрузку таким способом. Вы должны сначала преобразовать данные в большой двоичный объект и использовать специфичную для 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();
}
0 голосов
/ 14 ноября 2019

Я сейчас нашел, который работает с Chrome и IE:

http://danml.com/download.html

С уважением,

Глин

0 голосов
/ 19 октября 2019

Использовать element.appendChild(newElement);

или Переопределить jquery append

$('#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();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...