我想保存本地生成的文本文件。
这段代码几乎可以满足我的需求:
<a download="filename.txt" href="data:text/plain,sometext">Download</a>
sometext
表示该标记属性中的string
(使用javascript插入)。
您可以将其想象为由用户设置的textarea的内容。
问题是sometext
不能包含"
或'
,否则href属性会认为其内容先前完成,这会导致标记只保存string
的一部分sometext
1}}当你点击它时。
由于sometext
由用户生成,它可以包含这些字符,我不想强迫用户不使用这些字符。
是否有其他方法可以使用html / javascript保存文本文件?
我不想将"
发送到服务器。 (这可以解决问题,因为我可以在那里创建一个文件(包括'
和{{1}})并具有下载链接)
答案 0 :(得分:3)
这取决于您如何将此something
添加到href。
首先,单引号无所谓,因为它用双引号"
包裹,所以它会像这样工作:
<a href="data:text/plain,mytext'text">Download</a>
说到双引号,在HTML上下文中你必须使用正确的表示法,在这种情况下它将是"
。 HTML会将其理解为双引号:
<a href="data:text/plain,mytext"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;
}
&#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;
答案 1 :(得分:1)
写一个简单的javascript来删除'和'这样的字符
userText.replace(/\'/g, '').replace(/\"/g, '');
/表示它是一个正则表达式,\'和\“代表文字字符'和”,最后的g使它找到要替换的所有事件。
但是既然你想保留它,那就这样做:
userText.replace(/\'/g, '\\\'').replace(/\"/g, '\\\"');
\是一个字面反斜杠。这样,当你将它添加到文件的名称时,它将被转义并表示文字“和”。