عند الحديث عن القضايا المتعلقة بالمسار ، سوف يفكر الجميع في 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) ؛
أ = خالية ؛
لسوء الحظ ، لا تعمل هذه الطريقة تحت IE 6/7 القديمة ، وعندما يتم تنفيذ ALERT (A.HREF) ، لا يزال المنبثقة "./". في وقت لاحق ، وجدت أن شخصًا ما أثار هذه المشكلة على Stackoverflow ، والحل بسيط للغاية أيضًا. فقط حقن من خلال innerhtml:
نسخة الكود كما يلي:
var div = document.createElement ('div') ؛
div.innerhtml = '<a href = "./"> </a> "؛
ALERT (div.firstchild.href) ؛
div = null ؛
قد يسأل شخص ما: لماذا لا تستخدم التعبيرات العادية؟ إجابتي هي: بالنظر إلى ما إذا كان هناك اسم ملف ونقطة مرساة ومعلمة استعلام ، فقد يكون هذا التعبير العادي معقدًا للغاية.