Javascript mailto字符串丢失'encodeURI'编码

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

尝试使用javascript创建一个简单的'mailto'函数。我只需要能够发送一些链接(如:查看此文章bla bla)。

我需要发送的一些链接包括空格,丹麦字符。所以我一直在使用encodeURI()函数。

当我尝试邮件链接时出现问题(下面的示例代码)

       var _encodedPath = encodeURI(path);
       var _tempString = "mailto:[email protected]?subject=Shared%20from%20some%20page&body=" + _encodedPath;

如果我将_tempString输出到控制台,我会得到正确的编码字符串。但是当在'mailto'中使用相同的字符串时,字符串会丢失它的编码并返回到之前的状态。

任何线索,为什么这是?

提前致谢 :)

javascript html mailto
3个回答
0
投票

单击它时解码链接 - 这是正常的。由于您在mailto链接中有一个http链接,因此应该对其进行两次编码。

电子邮件客户端尽最大努力使链接看起来像链接。它们通常以某种任意且不可预测的方式决定链接的结束位置。

在电子邮件中,保持链接连续的最佳方法是将其括在角括号中,如下所示:

<http://www.example.com/url with spaces>

但这不是万无一失的。电子邮件很脆弱,您无法通过mailto链接很好地控制内容。尝试降低网址的复杂性可能更好 - 可能通过提供或利用网址缩短服务。任何超过74个字符的网址都可能被某些电子邮件客户端破坏。


0
投票

你应该使用encodeURIComponent而不是encodeURI

更多信息here


-1
投票

这个网站帮助我解决了mailto链接的任何问题:

http://www.1ngo.de/web/formular.html

可能它不是最好的方式,但它总是适用于我知道的每个浏览器。它还具有非常酷的算法来格式化内容,以便一切都应该是正常的。只需通过引用代码的一部分来尝试它并使用代码进行一些游戏,您将非常快速地了解那里到底发生了什么,以及如何根据您的意愿对其进行修改。虽然这有点晚了但我希望这个可以帮助任何人查看这个问题。

虽然它是德语版,但您只需要复制那里显示的代码并运行它并进行实验。

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