Как сгенерировать многострочную загрузку файла Javascript - PullRequest
0 голосов
/ 17 декабря 2018

Я создаю файл Minecraft .mcfunction для пакета данных, который пользователь может сгенерировать на основе введенной информации о том, что делает .mcfunction.Я сделал все остальное, но не могу создать загружаемый файл.Я провел некоторое исследование и нашел этот код, показанный ниже, проблема в том, что файл продолжает печатать все в одну строку, также я не уверен, как изменить его с .txt на .mcfunction

<script text="text/javascript">

function Download(name, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', name);

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}

</script>

Кто-нибудь знаетКак сделать так, чтобы это показывалось как многострочный текст, а не печатался на одной строке?Я знаю, что введенная строковая переменная верна, потому что я могу видеть, как она выглядит после отправки на консоль при нажатии клавиши f12.он точно отображается в нескольких строках на консоли, но не будет отображаться в виде нескольких строк при загрузке файла.какие-нибудь идеи о том, как это исправить?

Редактировать: я также видел кое-что о добавлении этой строки кода, но не уверен, куда я должен ее поместить или как использовать ее в этой функции.

downloadURI("data:text/html," + parsed.join("\r\n"), "name.txt");

Редактировать: только что обнаружил, что открытие файла в блокноте ++ отображается правильно ._.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Решено:

<script text="text/javascript">


function ninjaShopDownload(name, text) {
    var pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain+ parsed.join("\r\n");charset=utf-8,' + encodeURIComponent(text));
    pom.setAttribute('download', name+".mcfunction");

    if (document.createEvent) {
        var event = document.createEvent('MouseEvents');
        event.initEvent('click', true, true);
        pom.dispatchEvent(event);
    }
    else {
        pom.click();
    }
}

</script>

Я оставлю это на всякий случай, если кому-то еще это понадобится.

0 голосов
/ 18 декабря 2018

Вам нужно заменить \n s на \r\n s, чтобы они отображались так, как вы хотите в Блокноте Windows.Что касается изменения имени файла, попробуйте name = name.substr(0, name.lastIndexOf(".")) + ".mcfunction";

...