Понимание% 20 и блоб с грамматикой - PullRequest
1 голос
/ 22 марта 2019

Я не так хорош или не знаком с JS.

Я читал в Интернете об экспорте данных из таблицы в Excel из следующей статьи

Там они использовали этот пример функции

function exportTableToExcel(tableID, filename = ''){
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

    // Specify file name
    filename = filename?filename+'.xls':'excel_data.xls';

    // Create download link element
    downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if(navigator.msSaveOrOpenBlob){
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob( blob, filename);
    }else{
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    }
}

Здесь я не могу понять следующие строки

  1. var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

  2. var blob = new Blob(['\ufeff', tableHTML], {type: dataType }); navigator.msSaveOrOpenBlob( blob, filename);

Может ли кто-нибудь помочь мне понять это.

1 Ответ

1 голос
/ 22 марта 2019

Первый элемент выполняет базовую кодировку URL, заменяя пробелы их URL-эквивалентом %20.

Вторая вещь создает экземпляр Blob, который начинается с символа Юникода, соответствующего шестнадцатеричному значению feff, а затем следует с содержимым переменной tableHTML.

Наконец, вызов navigator заставляет браузер предложить пользователю загрузить файл.

Изменить:

Не могли бы вы рассказать об этом подробнее (/ / g, '% 20')

Это регулярное выражение JavaScript, как отметил @Felix Kling. Встроенное регулярное выражение в JavaScript начинается с косой черты и заканчивается косой чертой. g означает, что он применяется глобально, а не к первому совпадению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...