добавить кнопку отмены, которая убивает iframe - PullRequest
0 голосов
/ 11 марта 2020

У меня есть следующая функция downloadData, у которой есть «маска» обработки, отображаемая во время загрузки данных.

downloadData: function () {
            var me = this,
                grid = this.option.up('grid');      

            var mask = Ext.widget('messagebox', {
                target: grid,           
                isProcessing: true
            });     
                this.download(grid, mask);  
        },

Следующая функция «загрузки» загружает CSV-файл, создавая iframe с источником в виде html файла.

download: function (grid, mask, downloadData) {
        me=this;

        // data for child window
        winRoot.myParams = {};      
        winRoot.myParams.grid = Grid;   
        winRoot.myParams.CallLink = function (csv) {                
            me.downloadToCSV( Grid);
            setTimeout(function () {
                var iframe = document.getElementById("_hidden_iframe_exporter");
                iframe.contentDocument = null;
                iframe.src = "";
                dynamicGrid = null;
            }, 100);
            if (mask)
                mask.destroy();

        }

        // iframe that calls download.html
        var iframe = document.createElement('iframe');
        iframe.id = "_hidden_iframe_exporter";
        iframe.style.display = "none";
        iframe.src = 'download.html';
        iframe.hidden = true;
        document.body.appendChild(iframe);
    }

Я хочу добавить кнопку отмены к маске, которая отменяет загрузку файла . Но проблема, с которой я столкнулся, заключается в том, что iframe создается до того, как маска будет уничтожена (потому что она асинхронная javascript), что приводит к загрузке файла даже при нажатии кнопки отмены.

...