ใน JavaScript วิธีการทั่วไปคือการใช้ encodeuri (decodeuri) และ encodeuricomponent (decodeuricomponent) ใช้วิธีการและความแตกต่างที่เฉพาะเจาะจง
แต่จะหลบหนี HTML แบบผกผันใน JavaScript ได้อย่างไร? ตัวอย่างเช่นรหัสต่อไปนี้:
var JSondata = {title: "< %= data.name? data.name: title %>", desc: "< %= data.content? data.content: '' %>", ภาพ: "< %- data.img? data.img: '' %>"};ส่วนที่ห่อด้วย < %= %> เป็นค่าที่ส่งคืนจากเซิร์ฟเวอร์ (รหัสในตัวอย่างข้างต้นนำมาจากรหัสของเทมเพลต Express EJS ใน node.js) หากสตริงที่ส่งคืนจากเซิร์ฟเวอร์มีเครื่องหมายคำพูดเช่นคำพูดเดียวหรือสองเท่ารหัส JS ข้างต้นจะมีข้อผิดพลาดเมื่อตีความในเบราว์เซอร์ วิธีแก้ปัญหานี้?
แนวคิดพื้นฐานคือการสลับสตริง HTML ผ่านแอตทริบิวต์ InnerHTML ขององค์ประกอบ DOM ในหน้าแล้วส่งคืนค่าไปยังตัวแปร JavaScript ดูสองรหัสต่อไปนี้:
1. วิธีการเขียน JavaScript ดั้งเดิม:
ฟังก์ชั่น htmldecode (อินพุต) {var e = document.createElement ('div'); e.innerhtml = อินพุต; ส่งคืน e.childNodes.length === 0? "": e.childnodes [0] .nodevalue;} htmldecode ("<img src = 'myimage.jpg'>");2. วิธีการเขียน jQuery:
ฟังก์ชั่น htmldeCode (value) {return $ ('<div/>'). html (value) .Text (); -ฟังก์ชั่นแรกใช้วิธี JavaScript ดั้งเดิมเพื่อสร้างองค์ประกอบ DIV จากนั้นกำหนดสตริงที่จะต้องหลบหนีไปยังคุณสมบัติ InnerHTML และในที่สุดก็ส่งคืนค่าของคุณสมบัติ NodeValue ขององค์ประกอบ DIV ฟังก์ชั่นที่สองใช้วิธีการของ jQuery และหลักการพื้นฐานของมันเหมือนกับฟังก์ชั่นแรก เนื่องจากองค์ประกอบของ DIV ถูกสร้างขึ้นในหน่วยความจำเท่านั้นและไม่ได้ผนวกหรือเฉื่อยในหน้าพวกเขาจะไม่มีผลกระทบใด ๆ ในหน้าเว็บที่มีอยู่
ในที่สุดเราเปลี่ยนรหัสเริ่มต้นเป็นวิธีการต่อไปนี้:
var JSondata = {title: $ ('<div/>'). html ("< %= data.name? data.name: title %>"). text (), desc: $ ('<div/>'). html ("< %= data.notent?สิ่งนี้จะช่วยให้ HTML ผกผันของสตริงที่ส่งคืนโดยเซิร์ฟเวอร์ใน JavaScript
คำอธิบายโดยละเอียดข้างต้นเกี่ยวกับการหลบหนีย้อนกลับของ HTML ใน JavaScript เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่ามันจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น