好的,简单介绍一下背景知识,我正在为客户创建 HTML 电子邮件签名生成器,并且多次遇到问题。我创建了一个函数,允许用户下载 HTML 格式的文件,以便他们可以将其安装到他们选择的电子邮件平台中。我经常遇到的问题是,由于某种原因,当在 HTML 文件中的任何位置使用
#
时,下载时代码似乎停在那里。我认为 #
在某种程度上干扰了 .innerHTML
;使其因某种原因停止。
var content =
"<p>J. Random Hacker " +
"<p>Chief Example Officer, Yoyodyne, Inc. " +
"<p>We are the #1 widget manufacturer in the world!";
var a = document.createElement("a");
a.download = "signature.html";
a.href = "data:text/html," + content; // Grab the HTML
a.click(); // Trigger a click on the element
这里还有一张代码如何被截断的图片,您可以在下载文件后在检查元素中看到它。 在此输入图片描述
我已经明白了!!!!感谢那些帮助指导我的人!我根据听说 UTF-8 不允许 # 符号以及 # 符号对 URL 进行分段的情况进行了一些研究。我最终将“document.getElementById(“content”)”作为变量,然后执行“encodeURIComponent(content)”。我不是 100% 确定它为什么有效,但会找到答案。我假设它会将其编码到 # 不再存在的位置,直到解码回 # 那里,以免 URL 碎片化。
function download() {
var filename = document.getElementById("filename").value;
var content = document.getElementById("content").innerHTML;
var a = document.body.appendChild(document.createElement("a"));
a.download = filename + ".html";
a.href = "data:text/html;charset=utf-8," + encodeURIComponent(content);
a.click(); // Trigger a click on the element
}
谢谢那些帮忙的人!
最好的,
安德鲁