字符串中的Hashtag会破坏JavaScript

Bil*_*nor 5 javascript string hashtag

我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)

此代码使用Chrome完美运行.但是对于Firefox,它会在"#"之前停止.当我查看生成的输出文件时,我看到以下内容:

Chrome中的结果如下所示 1111#1111

Firefox中的结果如下所示 1111

在我看来,标签正在破坏某些东西.任何人都可以帮助我理解为什么字符串中的"#"在Firefox中引起了悲痛而不是Chrome?我试过用双引号和单引号包装字符串,但它似乎没有任何效果.

有任何想法吗?

Jon*_*ard 5

在提交之前,您需要将 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();
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到:encodeURIComponent

编辑:而且,顺便说一句,这只是我,但你为什么还要做 data:text/html?只是似乎没有必要。

您可以通过 Ajax 轻松提交它(或者如果您有可用的库,则使用 jQuery 的 $.ajax)。如果您碰巧使用 jQuery,那么所有这些可能会更容易一些。无论哪种方式,希望有所帮助。