ลักษณะการทำงานของ URL ด้านล่างมีความแตกต่างกันหรือไม่
ฉันไม่รู้ว่าทำไม&แทรกมันสร้างความแตกต่างหรือไม่?
www.testurl.com/test?param1=test&current=true
เทียบกับ
www.testurl.com/test?param1=test¤t=true
ลักษณะการทำงานของ URL ด้านล่างมีความแตกต่างกันหรือไม่
ฉันไม่รู้ว่าทำไม&แทรกมันสร้างความแตกต่างหรือไม่?
www.testurl.com/test?param1=test&current=true
เทียบกับ
www.testurl.com/test?param1=test¤t=true
<p>www.testurl.com/test?param1=test&current=true</p>หรือ<a href="www.testurl.com/test?param1=test&current=true">linky</a>?
คำตอบ:
& เป็น HTML สำหรับ "จุดเริ่มต้นของการอ้างอิงอักขระ"
& คือการอ้างอิงอักขระสำหรับ "An ampersand"
¤t; ไม่ใช่การอ้างอิงอักขระมาตรฐานดังนั้นจึงเป็นข้อผิดพลาด (เบราว์เซอร์อาจพยายามกู้คืนข้อผิดพลาด แต่คุณไม่ควรขึ้นอยู่กับสิ่งนี้)
หากคุณใช้การอ้างอิงอักขระสำหรับอักขระจริง (เช่น™) (™) จะปรากฏใน URL แทนที่จะเป็นสตริงที่คุณต้องการ
(โปรดทราบว่าขึ้นอยู่กับเวอร์ชันของ HTML ที่คุณใช้คุณอาจต้องลงท้ายการอ้างอิงอักขระด้วย a ;ซึ่งเป็นเหตุผลว่าทำไมจึง&trade=ถือว่าเป็น™ HTML 4 อนุญาตให้มีการ ommited หากอักขระถัดไปเป็นอักขระที่ไม่ใช่คำ ( เช่น=) แต่บางเบราว์เซอร์ (Hello Internet Explorer) มีปัญหากับสิ่งนี้)
HTML ไม่รู้จัก&แต่จะรู้จัก&เนื่องจากมีค่าเท่ากับ&HTML
ฉันดูโพสต์นี้ที่มีคนสร้างไว้: http://www.webmasterworld.com/forum21/8851.htm
แหล่งที่มาของฉัน: http://htmlhelp.com/tools/validator/pro issues.html # amp
ข้อผิดพลาดทั่วไปอีกประการหนึ่งเกิดขึ้นเมื่อรวม URL ที่มีเครื่องหมายแอมเพอร์แซนด์ ("&"):
สิ่งนี้ไม่ถูกต้อง:
a href = "foo.cgi? chapter = 1 & section = 2 & copy = 3 & lang = th"
คำอธิบาย:
ตัวอย่างนี้สร้างข้อผิดพลาดสำหรับ "ส่วนเอนทิตีที่ไม่รู้จัก" เนื่องจาก
"&"ถือว่าเริ่มต้นการอ้างอิงเอนทิตี เบราว์เซอร์มักจะกู้คืนได้อย่างปลอดภัยจากข้อผิดพลาดประเภทนี้ แต่ปัญหาจริงจะเกิดขึ้นในบางกรณี ในตัวอย่างนี้เบราว์เซอร์จำนวนมากแปลง & copy = 3 เป็น© = 3 ได้อย่างถูกต้องซึ่งอาจทำให้ลิงก์ล้มเหลว เนื่องจาก⟨เป็นเอนทิตี HTML สำหรับวงเล็บมุมชี้ซ้ายเบราว์เซอร์บางตัวจึงแปลง & lang = en เป็น 〈= th และเบราว์เซอร์เก่าตัวหนึ่งยังพบเอนทิตี§การแปลง & section = 2 เป็น§ion = 2
ดังนั้นเป้าหมายคือหลีกเลี่ยงปัญหาเมื่อคุณพยายามตรวจสอบเว็บไซต์ของคุณ ดังนั้นคุณควรแทนที่เครื่องหมายแอมเพอร์แซนด์&เมื่อเขียน URL ในมาร์กอัปของคุณ
โปรดทราบว่าการแทนที่
&ด้วย& จะทำได้เฉพาะเมื่อเขียน URL ใน HTML โดยที่"&"อักขระพิเศษอยู่ที่ไหน(พร้อมด้วย "<" and ">") เมื่อเขียน URL เดียวกันในข้อความอีเมลธรรมดาหรือในแถบตำแหน่งของเบราว์เซอร์คุณจะใช้"&"หรือไม่"&"ก็ได้ ด้วย HTML เบราว์เซอร์"&"จะแปลเป็น"&"ดังนั้นเว็บเซิร์ฟเวอร์จะเห็น"&"และไม่"&"อยู่ในสตริงข้อความค้นหาของคำขอ
หวังว่านี่จะช่วยได้ :)
นั่นเป็นตัวอย่างที่ดี เมื่อ¤tจะแยกออกเป็นโหนดข้อความ¤tจะถูกแปลงเป็น เมื่อแยกวิเคราะห์เป็นค่าแอตทริบิวต์¤tก็จะแยกวิเคราะห์เป็น
หากคุณต้องการ¤tในโหนดข้อความคุณควรเขียน&currentมาร์กอัปของคุณ
รายละเอียดเกี่ยวกับเลือดอยู่ในข้อกำหนดการแยกวิเคราะห์ HTML5 - สถานะอ้างอิงอักขระที่มีชื่อ
หากคุณกำลังสร้างสตริงอักขระ ทำ:
let linkGoogle = 'https://www.google.com/maps/dir/?api=1';
let origin = '&origin=' + locations[0][1] + ',' + locations[0][2];
aNav.href = linkGoogle + origin;
&HTML ไม่ใช่&ใน URL