字符串中断中的标签 JavaScript
Hashtag within string breaks JavaScript
我正在尝试使用 JavaScript 将字符串保存到外部文件。下面是我正在执行的。
var mytext = "1111#1111"
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
此代码使用 Chrome 完美运行。但是对于 Firefox,它会在“#”之前停止。当我查看生成的输出文件时,我看到以下内容:
Chrome 中的结果如下所示
1111#1111
Firefox 中的结果如下所示
1111
在我看来,主题标签似乎破坏了某些东西。任何人都可以帮助我理解为什么字符串中的“#”在 Firefox 中导致了错误而不是 Chrome 吗?我试过用双引号和单引号将字符串括起来,但似乎没有任何效果。
有什么想法吗?
您需要在提交前为您的字符串添加 URL 编码。
var mytext = encodeURIComponent( "1111#1111" );
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
可在此处找到更多信息:encodeURIComponent
编辑:顺便说一句,这只是我,但你为什么还要做数据:text/html?只是好像没必要。
您可以通过 Ajax 轻松提交(或者使用 jQuery 的 $.ajax 如果您有可用的库)。如果你碰巧使用 jQuery,那么这一切可能会更容易一些。无论哪种方式,希望对您有所帮助。
如果我在 firefox 中使用它,结果很好
var mytext = encodeURIComponent("1111#1111");
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
诀窍是一如既往地对 uri 组件进行编码。而你传递的本质上是一个 uri 组件。
这样所有特殊字符如 ? # 和 + 和 % 将被正确解析。
我正在尝试使用 JavaScript 将字符串保存到外部文件。下面是我正在执行的。
var mytext = "1111#1111"
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
此代码使用 Chrome 完美运行。但是对于 Firefox,它会在“#”之前停止。当我查看生成的输出文件时,我看到以下内容:
Chrome 中的结果如下所示
1111#1111
Firefox 中的结果如下所示
1111
在我看来,主题标签似乎破坏了某些东西。任何人都可以帮助我理解为什么字符串中的“#”在 Firefox 中导致了错误而不是 Chrome 吗?我试过用双引号和单引号将字符串括起来,但似乎没有任何效果。
有什么想法吗?
您需要在提交前为您的字符串添加 URL 编码。
var mytext = encodeURIComponent( "1111#1111" );
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
可在此处找到更多信息:encodeURIComponent
编辑:顺便说一句,这只是我,但你为什么还要做数据:text/html?只是好像没必要。
您可以通过 Ajax 轻松提交(或者使用 jQuery 的 $.ajax 如果您有可用的库)。如果你碰巧使用 jQuery,那么这一切可能会更容易一些。无论哪种方式,希望对您有所帮助。
如果我在 firefox 中使用它,结果很好
var mytext = encodeURIComponent("1111#1111");
var a = document.body.appendChild(document.createElement("a"));
a.download = "My_output.html";
a.href = "data:text/html," + mytext;
a.click();
诀窍是一如既往地对 uri 组件进行编码。而你传递的本质上是一个 uri 组件。
这样所有特殊字符如 ? # 和 + 和 % 将被正确解析。