เมื่อพูดถึงปัญหาที่เกี่ยวข้องกับเส้นทางทุกคนจะคิดถึง Window.Location มันเป็นความจริงที่วัตถุนี้ให้ข้อมูลเส้นทางจำนวนมากและสิ่งที่ใช้กันทั่วไปรวมถึง:
1.location.href: URL เต็มของหน้าปัจจุบัน
2. -location.PathName: ชื่อเส้นทางใน URL ปัจจุบัน
3.location.hash: จุดยึดใน URL ปัจจุบัน
4.location.search: พารามิเตอร์การสืบค้นใน URL ปัจจุบัน
อย่างไรก็ตามตำแหน่งไม่มีคุณสมบัติที่ได้รับเส้นทางสัมบูรณ์ไปยังไดเรกทอรีปัจจุบันโดยตรง (ไม่รวมชื่อไฟล์) ผ่าน Google ฉันพบวิธีการที่ไม่ถูกต้องบางอย่างเช่นการแยก URL ออกเป็นอาร์เรย์ผ่าน "/" ลบรายการสุดท้ายของอาร์เรย์แล้วจึงเชื่อมต่อเป็นสตริง แต่ถ้าไม่ได้ระบุชื่อไฟล์ใน URL ผลลัพธ์จะเป็นความผิดพลาดครั้งใหญ่
จากประสบการณ์การเข้ารหัสก่อนหน้านี้แอตทริบิวต์ HREF ขององค์ประกอบ A จะส่งคืนเส้นทางสัมบูรณ์ซึ่งหมายความว่ามันมีความสามารถในการแปลงเส้นทางสัมพัทธ์เป็นเส้นทางสัมบูรณ์ ฉันลองใช้รหัสต่อไปนี้แล้วมันก็กลายเป็น:
การคัดลอกรหัสมีดังนี้:
var a = document.createElement ('a');
A.href = './';
การแจ้งเตือน (A.Href);
a = null;
น่าเสียดายที่วิธีนี้ไม่ทำงานภายใต้ Old IE 6/7 และเมื่อมีการดำเนินการแจ้งเตือน (A.HREF) ป๊อปอัพยังคงอยู่ "./" ต่อมาฉันพบว่ามีคนหยิบยกปัญหานี้ใน Stackoverflow และการแก้ปัญหาก็ง่ายมาก เพียงแค่ฉีดผ่าน innerhtml:
การคัดลอกรหัสมีดังนี้:
var div = document.createElement ('div');
div.innerhtml = '<a href = "./"> </a> ";
การแจ้งเตือน (div.firstchild.href);
div = null;
บางคนอาจถามว่า: ทำไมไม่ใช้นิพจน์ทั่วไป? คำตอบของฉันคือ: พิจารณาว่ามีชื่อไฟล์จุดยึดและพารามิเตอร์การสืบค้นนิพจน์ปกตินี้อาจค่อนข้างซับซ้อน