gss5
gss5

Reputation: 163

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?

Upvotes: 10

Views: 9088

Answers (2)

Daniel Cassidy
Daniel Cassidy

Reputation: 25627

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.

Upvotes: 21

Quentin
Quentin

Reputation: 944014

You want encodeURIComponent not encodeURI.

Upvotes: 2

Related Questions