альтернатива iframe в Ext.window - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть большой html файл, который я хочу скачать, открыв новое окно. В настоящее время я использую iframe, который делает процесс долгим, медленным, а также блокирует приложение. Может кто-нибудь предложить мне альтернативу iframe? Пожалуйста, смотрите ниже код

   var window = new Ext.Window({
                title: "download",
                height: 100,
                layout: 'fit',
                items: [{
                    xtype: 'component',

                    autoEl: {
                            tag: 'iframe',
                            src: 'largedata.html'

                        }
                    }]
            }).show();

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете сделать это с помощью XMLHttpRequest и скрытого элемента dom.

Пример:

        var xhr = new XMLHttpRequest();
        xhr.responseType = 'blob';
        xhr.onload = function () {
            if (xhr.status == 200) {
                var name = xhr.getResponseHeader('Content-Disposition');
                var filename = name.split("Attachment;filename=")[1];
                var a = document.createElement('a');
                a.href = window.URL.createObjectURL(xhr.response); // xhr.response is a blob
                a.download = filename; // Set the file name.
                a.style.display = 'none';
                document.body.appendChild(a);
                a.click();
                delete a;
            }
        };
        xhr.open('GET', url, true);
        xhr.send();

Параметр url - это путь к файлу.

Редактировать 2020 -04-17:

Альтернативно вы можете просто открыть окно:

window.open(url, '_blank');
...