JQuery की चाल उद्धरण चिह्नों को एनकोड नहीं करती है और IE में यह आपके व्हाट्सएप को बंद कर देगी।
Django में भागने के टमप्लटेटैग के आधार पर , जो मुझे लगता है कि पहले से ही उपयोग किया जाता है / पहले से ही परीक्षण किया जाता है, मैंने इस फ़ंक्शन को बनाया जो कि आवश्यक है।
यह व्हाट्सएप-स्ट्रिपिंग मुद्दे के लिए किसी भी वर्कअराउंड की तुलना में यकीनन सरल (और संभवतः तेज) है - और यह उद्धरण चिह्नों को एन्कोड करता है, जो आवश्यक है यदि आप उदाहरण के लिए विशेषता मान के अंदर परिणाम का उपयोग करने जा रहे हैं।
function htmlEscape(str) {
return str
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
}
// I needed the opposite function today, so adding here too:
function htmlUnescape(str){
return str
.replace(/"/g, '"')
.replace(/'/g, "'")
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/&/g, '&');
}
अद्यतन 2013-06-17:
सबसे तेजी से भागने की खोज में मुझे इस replaceAll
पद्धति का कार्यान्वयन मिला है :
http://dumpsite.com/forum/index.php?topic=4.msg29#msg29
(यहां भी संदर्भित: सबसे तेज एक स्ट्रिंग में एक चरित्र के सभी उदाहरणों को बदलने की विधि )
कुछ प्रदर्शन परिणाम यहाँ:
http://jsperf.com/htmlencoderegex/25
यह replace
ऊपर बनी चेन को समान परिणाम स्ट्रिंग देता है। मुझे बहुत खुशी होगी अगर कोई समझा सकता है कि यह तेज क्यों है !?
अद्यतन 2015-03-04:
मैंने अभी देखा कि AngularJS उपरोक्त विधि का बिल्कुल उपयोग कर रहा है:
https://github.com/angular/angular.js/blob/v1.3.14/src/ngSanitize/sanitize.js#L435
वे कुछ परिशोधन जोड़ते हैं - वे एक अस्पष्ट यूनिकोड मुद्दे को संभालने के साथ-साथ सभी गैर-अल्फ़ान्यूमेरिक वर्णों को संस्थाओं में परिवर्तित करते हुए दिखाई देते हैं । जब तक आप अपने दस्तावेज़ के लिए एक UTF8 चारसेट निर्धारित करते हैं, तब तक मैं इस धारणा के अधीन था कि यह आवश्यक नहीं है।
मैं यह नोट करूंगा कि (4 साल बाद) Django अभी भी इन चीजों में से कोई भी नहीं करता है, इसलिए मुझे यकीन नहीं है कि वे कितने महत्वपूर्ण हैं:
https://github.com/django/django/blob/1.8b1/django/utils /html.py#L44
अपडेट 2016-04-06:
आप आगे की स्लैश से बचना चाह सकते हैं /
। यह एचटीएमएल एन्कोडिंग के लिए आवश्यक नहीं है, हालांकि इसे ओडब्ल्यूएएसपी द्वारा एक एंटी-एक्सएसएस सुरक्षा उपाय के रूप में अनुशंसित किया गया है । (टिप्पणियों में यह सुझाव देने के लिए @JNF को धन्यवाद)
.replace(/\//g, '/');