2011-07-01 23 views
4

我有一個JavaScript函數,像這樣:轉義和在郵件客戶端顯示(郵寄地址鏈接)

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

此代碼是一個超鏈接的onclick事件執行,並打開郵件客戶端(郵寄地址://) 。但是,該頁面的標題有幾個&符號,但標題僅在第一個&之前被提取。該網址始終提取。

什麼是正確的JavasSript逃脫&並顯示在郵件客戶端的主題行?

回答

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

應該這樣做(encodeURIComponent而不是encodeURI)。

在您的原始代碼中,您還錯誤地將主題(第一行在第二行,然後再在第三行)進行了雙重編碼。

我把重新命名變量,更清楚地表明它們所包含的編碼主題,而不是原文的自由。

+0

請勿使用'escape',否則不推薦使用,因爲它無法正常工作。 – Quentin

+0

@Quentin斑點。我現在有點饒你的答案,對不起:)。 –

+2

那也沒用?對於像&b&c這樣的標題,我只能得到「a」。 – gss5

相關問題