英文: A 链接标记คือ下会自动补全 href
ในขณะที่ทำงานกับ Ajax Link Tracker และ Mapsurface ฉันได้พบกับความไม่สอดคล้องกันในการดึงแอตทริบิวต์ HREF โดยใช้การเขียนสคริปต์ DOMแอตทริบิวต์ HREF นั้นแตกต่างจากแอตทริบิวต์องค์ประกอบอื่น ๆ ซึ่งชุดค่าสามารถสัมพันธ์กับบริบทของ URL หน้า หากคุณตั้งค่าลิงค์ด้วยแอตทริบิวต์ HREF ที่สัมพันธ์กัน
<a href = ../การพัฒนา/test1.html> หน้าทดสอบ </a>
เบราว์เซอร์จะดูที่ URL ปัจจุบันของหน้าและได้รับ URL สัมบูรณ์สำหรับลิงก์
http://www.glenn.jones.net/development/test1.html
นี่คือรากของปัญหาเบราว์เซอร์บางตัวส่งคืนข้อความของแอตทริบิวต์และอื่น ๆ กลับมาที่ URL สัมบูรณ์ที่ได้รับ ผลลัพธ์ยังแตกต่างกันไปตามวิธีที่คุณใช้เพื่อดึงแอตทริบิวต์ HREF มีสามวิธีทั่วไปในการเข้าถึงแอตทริบิวต์:
linkobj.href; linkobj ['href']; linkobj.getAttribute ('href');
linkobj.href และ linkobj['href ']; วิธีการเข้าถึงแอตทริบิวต์ส่งคืน URL สัมบูรณ์ที่ได้รับอย่างสม่ำเสมอ
Microsoft ได้พยายามแก้ไขปัญหานี้โดย การ เพิ่มพารามิเตอร์ที่สองในวิธีการ GetAttribute พารามิเตอร์ที่สองสามารถตั้งค่าเป็น 0,1 หรือ 2 ถ้าพารามิเตอร์ถูกตั้งค่าเป็น 2 วิธีการส่งคืนข้อความแอตทริบิวต์ การตั้งค่าอื่น ๆ จะส่งคืน URL สัมบูรณ์ที่ได้รับ
linkobj.getAttribute ('href'); linkobj.getAttribute ('href', 2);
URL สัมบูรณ์
ดังนั้นสิ่งที่ควรส่งคืนโดยวิธี getAttribute? ข้อกำหนดหลักของ W3C DOM ระดับ 2 ซึ่งกำหนดโครงสร้างของวิธีการ getAttribute ไม่ครอบคลุมปัญหานี้ ไม่ใช่ว่าวิธีการทั้งสองผิดหรือถูก ณ จุดนี้ข้อมูลจำเพาะเปิดให้ตีความ
ในฐานะผู้เขียนโค้ดฉันต้องการเข้าถึงทั้งสองค่า ข้อกำหนดของ DOM Core ควรได้รับการปรับปรุงเพื่อแก้ไขปัญหา
ในขณะนี้ฉันกำลังใช้วิธีการออบเจ็กต์ของโรงเรียนเก่า linkobj.href เพื่อส่งคืน URL ที่แน่นอนที่ได้รับ มันให้ผลลัพธ์ที่สอดคล้องกันมากที่สุดในทุกเบราว์เซอร์ URL ที่น่าสนใจ
ตามปกติเช่นเดียวกับที่ฉันเสร็จสิ้นโพสต์นี้ฉันพบรายงานข้อผิดพลาดนี้ในไซต์ QuickMode ซึ่งกล่าวถึงเรื่องเดียวกัน
getAttribute href เป็นแบบสัมบูรณ์เสมอ html