如何确保数据正文:URI 被正确解释?

问题描述 投票:0回答:1

好的,简单介绍一下背景知识,我正在为客户创建 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

这里还有一张代码如何被截断的图片,您可以在下载文件后在检查元素中看到它。 在此输入图片描述

javascript escaping data-uri
1个回答
1
投票

我已经明白了!!!!感谢那些帮助指导我的人!我根据听说 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
}

谢谢那些帮忙的人!

最好的,

安德鲁

© www.soinside.com 2019 - 2024. All rights reserved.