ลักษณะการทำงานของ 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