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

时间:2014-09-18 15:35:21

标签: javascript html file-io

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

这段代码几乎可以满足我的需求:

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

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

问题是sometext不能包含"',否则href属性会认为其内容先前完成,这会导致标记只保存string的一部分sometext 1}}当你点击它时。

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

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

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

2 个答案:

答案 0 :(得分:3)

这取决于您如何将此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来说,这不重要)

&#13;
&#13;
var ChangeHref = function() {
    var el = document.getElementById("a1");
    el.href = "data:text/plain," + document.getElementById("inp1").value;
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

写一个简单的javascript来删除'和'这样的字符

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

/表示它是一个正则表达式,\'和\“代表文字字符'和”,最后的g使它找到要替换的所有事件。

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

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

\是一个字面反斜杠。这样,当你将它添加到文件的名称时,它将被转义并表示文字“和”。