我正在为用户可以根据输入的.mcfunction功能信息生成的数据包创建Minecraft .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");
编辑: 刚刚发现在notepad ++中打开文件可以正确显示._。
答案 0 :(得分:0)
您需要将\n
替换为\r\n
,以使其在Windows记事本中显示。至于更改文件名,请尝试name = name.substr(0, name.lastIndexOf(".")) + ".mcfunction";
答案 1 :(得分:0)
已解决:
<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>
如果其他人需要它,我会保留。