简体   繁体   中英

Escaping & for display in mail client (mailto link)

I have a JavaScript function like so:

var strBody = encodeURI(window.location.href);
var strSubject = encodeURI(document.title);
var mailto_link = "mailto:?subject=" + encodeURI(strSubject) + "&body=" + strBody;

This code is executed on a hyperlink's onclick event, and opens the mail client (mailto://). However, the title of the page has several & symbols, but the title is only picked up until the first &. The url is always picked up.

What is the correct JavasSript to escape the & and display it in the mail client's subject line?

var encoded_body = encodeURIComponent(window.location.href);
var encoded_subject = encodeURIComponent(document.title);
var mailto_link = "mailto:?subject=" + encoded_subject + "&body=" + encoded_body;

should do it ( encodeURIComponent instead of encodeURI ).

In your original code you were also incorrectly double encoding the subject (once on line 2, and then again on line 3).

I took the liberty of renaming your variables to make it clearer that they contain the encoded subject and body , as opposed to the original text.

You want encodeURIComponent not encodeURI.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM