2

В настоящее время я работаю над исправлением CSV-экспорта таблицы данных в веб-приложении. В настоящее время он может экспортировать все необходимые браузеры, кроме Chrome, когда вы нажимаете кнопку экспорта. Я пытался понять это сейчас, и я сопротивляюсь вытягиванию волос.CSV Экспорт таблицы в Chrome не работает - JavaScript/AngularJS

Код, приведенный ниже, является моим сервисом, который работал до недавнего времени. Любая помощь приветствуется.

svc.downloadContent = 
(target, fileName, content) => { 
    if (!browserSvc.canDownloadFiles()) return; 

    // IE10 
    if (window.navigator.msSaveOrOpenBlob) { 
    const blob = new Blob([content], {type: 'text/csv'}); 
    window.navigator.msSaveOrOpenBlob(blob, fileName); 
    // IE9 
    } else if (env.browser === 'Explorer') { 
    const frame = document.createElement('iframe'); 
    document.body.appendChild(frame); 
    angular.element(frame).hide(); 

    const cw = frame.contentWindow; 
    const cwDoc = cw.document; 
    cwDoc.open('text/csv', 'replace'); 
    cwDoc.write(content); 
    cwDoc.close(); 
    cw.focus(); 
    cwDoc.execCommand('SaveAs', true, fileName); 

    document.body.removeChild(frame); 
    // Sane browsers 
    } else { 
    const blob = new Blob([content], {type: 'text/csv'}); 

    const url = URL.createObjectURL(blob); 

    const a = angular.element(target); 
    const download = a.attr('download'); 
    // If not already downloading ... 
    if (!download) { 
     a.attr('download', fileName); 
     a.attr('href', url); 

     // This must run in the next tick to avoid 
     // "$digest already in progress" error. 
     //$timeout(() => target.click()); 
     try { 
     target.click(); 
     // Clear attributes to prepare for next download. 
     a.attr('download', ''); 
     a.attr('href', ''); 
     } catch (e) { 
     console.error('csv-svc.js: e =', e); 
     } 
    } 
    } 

ответ

1

Мне удалось выяснить это через пару минут после публикации моего вопроса. Мне нужно было добавить другое, если только для Chrome. Тем не менее, я опубликую исправление и оставлю это в надежде, что это может помочь кому-то еще в будущем.

else if (env.browser === 'Chrome') { 

    const blob = new Blob([content], {type: 'text/csv'}); 

    const url = URL.createObjectURL(blob); 
    const link = document.createElement('a'); 
    link.href = url; 
    link.style = 'visibility:hidden'; 
    link.download = fileName; 
    document.body.appendChild(link); 
    link.click(); 
    document.body.removeChild(link); 

    }