儘管我在JavaScript中使用Salesforce變量,但無需知道Salesforce來回答我的問題。有一個我想訪問的密碼字段。我可以使用Salesforce的變量,{!Account.Password__c}
做到這一點,我的JavaScript裏面像這樣:如何在JavaScript中定義可包含任何字符的字符串?
var p = '{!Account.Password__c}';
我一直在使用這種很長一段時間,但也有一些情況下,它不能正常工作。唯一的問題是密碼可能包含任何字符(作爲一個好的密碼應該)。所以如果它包含一個單引號,那麼這個JavaScript將不會運行。我可以用雙引號將它寫出:
var p = "{!Account.Password__c}";
但它也可以包含雙引號。它也可能包含正斜槓和/或反斜槓。
密碼字符串需要能夠採取任何這些:
Idon'tknow
pass"word"
/-\_|)_/-\_/\/\
"'[email protected]#
+*co/rn
這是我的代碼:
var u = '{!Account.Email_Address__c}';
var p = escape(encodeURIComponent('{!Account.Password__c}'));
window.open('http://mywebsite.com/?&u=' + u + '&p=' + p,'_blank');
如果您想直接將其提供給JavaScript,您必須從後端處理它。 *但爲什麼你會發送密碼和用戶名在GET請求。這是壞的壞事。這就像是把你的房門鑰匙粘在你的前門上。 – epascarello
事實上,爲了回答這個問題,需要了解Salesforce的知識,因爲它必須是一個Salesforce機制,允許在注入JavaScript代碼之前清理字符串。 – Pointy
在ASP.NET中,等價的問題是如何設置'foo',使'var p ='<%= foo %>''適用於任何'foo'的值。答案是在生成頁面之前,對'foo'服務器端進行必要的轉義。 Salesforce推測具有類似的服務器端清理機制。我不認爲你完全可以做到客戶端。 –