Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将特殊字符传递给mailto body会破坏JavaScript_Javascript_Jquery_Html_Mailto - Fatal编程技术网

将特殊字符传递给mailto body会破坏JavaScript

将特殊字符传递给mailto body会破坏JavaScript,javascript,jquery,html,mailto,Javascript,Jquery,Html,Mailto,我有一个C#ASP.NET应用程序,它为一些用户配置文件信息创建一个JavaScript值数组。在客户端,我使用jQuery/JavaScript读取数组并生成mailto链接。某些字段可以包含特殊字符,例如“&=/\” 这是C代码: 我将上述方法的值写入页面,该页面生成以下JavaScript: <script type="text/javascript">var currentElements = { currentUserName: 'Alex', currentUserEma

我有一个C#ASP.NET应用程序,它为一些用户配置文件信息创建一个JavaScript值数组。在客户端,我使用jQuery/JavaScript读取数组并生成mailto链接。某些字段可以包含特殊字符,例如
“&=/\”

这是C代码:

我将上述方法的值写入页面,该页面生成以下JavaScript:

<script type="text/javascript">var currentElements = { currentUserName: 'Alex', currentUserEmail: 'myemailID', currentSite: 'Helpdesk', currentTitle: 'Phone User Guides & Troubleshooting'}</script>
var currentElements={currentUserName:'Alex',currentUserEmail:'myemailID',currentSite:'Helpdesk',currentTitle:'Phone User Guide&Troubleshooting'}
然后,我使用以下JavaScript代码生成电子邮件链接,将锚定标记附加到页面上的元素:

function generateEmailTo(){
  var body = currentElements.currentUserName + ' has shared a page with you on the intranet.%0A%0APage Title: %22' +
    currentElements.currentTitle.replace("&","and")  + '%22%0A' + $(location).attr('href').replace('#',''); 
  var subject = currentElements.currentUserName + ' has shared a page with you on the intranet';
  var mailto = 'mailto: ?body=' + body + '&subject=' + subject;
  var anchor = '<a href="' + mailto + '"></a>';

  $("#email-placeholder").wrap(anchor);
}
....

<img id="email-placeholder" title="Send this page to a friend." src="<%= baseUrl %>/SiteAssets/media/icons/email-icon.gif"/>
函数generateEmailTo(){
var body=currentElements.currentUserName+'已在intranet上与您共享了一个页面。%0A%0A页面标题:%22'+
currentElements.currentTitle.replace(“&”,“and”)+'%22%0A'+$(位置).attr('href').replace('#','');
var subject=currentElements.currentUserName+'已在intranet上与您共享了一个页面';
var mailto='mailto:?body='+body+'&subject='+subject;
var-anchor='';
$(“#电子邮件占位符”).wrap(锚定);
}
....
/SiteAssets/media/icons/email icon.gif/>

对于mailto正文文本,我注意到它只需要一小部分编码字符,比如双引号为
%22
,换行符为
%0A
。如何将特殊字符(如单引号、符号等)传递给mailto正文文本并使JavaScript满意?

mailto是一个URI方案,因此其所有组件都必须进行URI编码。您可以使用JavaScript encodeURIComponent函数对mailto组件进行编码。请参见以下示例:

function buildMailTo(address, subject, body) {
    var strMail = 'mailto:' + encodeURIComponent(address)
                   + '?subject=' + encodeURIComponent(subject)
                   + '&body=' + encodeURIComponent(body);
    return strMail;
}
var strTest = buildMailTo('abc@xyz.com', 'Foo&foo', 'Bar\nBar');
/* strTest should be "mailto:abc%40xyz.com?subject=Foo%26foo&body=Bar%0ABar" */
window.open(strTest);

希望这些帮助。

可能的重复tor[#987199 mailto special characters][1][1]:正是我所需要的!谢谢,ExpExc:)
function buildMailTo(address, subject, body) {
    var strMail = 'mailto:' + encodeURIComponent(address)
                   + '?subject=' + encodeURIComponent(subject)
                   + '&body=' + encodeURIComponent(body);
    return strMail;
}
var strTest = buildMailTo('abc@xyz.com', 'Foo&foo', 'Bar\nBar');
/* strTest should be "mailto:abc%40xyz.com?subject=Foo%26foo&body=Bar%0ABar" */
window.open(strTest);