HTML和JavaScript-如何正确保存纯文本

HTML and JavaScript - How to save plain text right

本文关键字:保存 文本 何正确 JavaScript- HTML      更新时间:2023-09-26

我想保存一个本地生成的文本文件。

这个代码几乎做到了我想要的:

<a download="filename.txt" href="data:text/plain,sometext">Download</a>

sometext表示该标记属性中的string(使用javascript插入)。您可以将其想象为用户设置的文本区域的内容。

问题是sometext不能包含"',因为否则href属性会认为其内容提前完成,这会导致标记在您单击它时只保存该string的一部分。

由于sometext是由用户生成的,它可以包含这些字符,我不想强迫用户不使用这些字符。

有没有其他方法可以使用html/javascript保存文本文件?

我不想将sometext发送到服务器。(这将解决问题,因为我可以在那里创建一个文件(包括"')并具有下载链接)

这将取决于如何将此something添加到href。

首先,单引号并不重要,因为它被双引号"包裹,所以它会像这样工作:

<a href="data:text/plain,mytext'text">Download</a>

当涉及到双引号时,在HTML上下文中,您必须使用正确的表示法,在本例中为&quot;。HTML将其理解为双引号:

<a href="data:text/plain,mytext&quot;text">Download</a>
<!-- It will turn into mytext"text -->

但是

既然你说这将是用户的输入,我想你可能是通过Javascript设置href的,所以我认为这无关紧要,它会是这样的:

(试着键入单引号或双引号…对于JS来说,这无关紧要)

var ChangeHref = function() {
    var el = document.getElementById("a1");
    el.href = "data:text/plain," + document.getElementById("inp1").value;
}
<input id="inp1" type="text" />
<input type="button" value="change href" onclick="ChangeHref()" />
<br />
<a id="a1" download="filename.txt" href="data:text/plain,test">Download</a>

编写一个简单的javascript来删除中的"and"字符

userText.replace(/''/g, '').replace(/'"/g, '');

/表示它是一个正则表达式,'''和''"表示文字字符'和",结尾的g使它查找所有要替换的字符。

但既然你想保留它,那就这样做:

userText.replace(/''/g, '''''').replace(/'"/g, ''''"');

''是一个字面反斜杠。这样,当您将其添加到文件名中时,它将转义并表示文字"and".