javascript - you - ws3 school html




location.host مقابل location.hostname والتوافق بين المتصفحات؟ (4)

أي واحد منها هو الأكثر فاعلية مقابل التحقق مما إذا كان وكيل المستخدم يدخل إلى النطاق الصحيح.

نود أن نعرض تحذيرًا على نمط "شريط علوي" صغير الحجم استنادًا إلى js إذا كان يتم الدخول إلى النطاق باستخدام نوع من بروكسي الويب (لأنه يميل إلى كسر js).

كنا نفكر في استخدام ما يلي:

var r = /.*domain\.com$/;
if (r.test(location.hostname)) {
    // showMessage ...
}

من شأنه أن يعتني أي نطاقات فرعية نستخدمها في أي وقت.

ما الذي يجب أن نستخدمه المضيف أو اسم المضيف؟

في Firefox 5 و Chrome 12:

console.log(location.host);
console.log(location.hostname);

.. يظهر نفسه لكل منهما.

هل هذا بسبب عدم وجود المنفذ بالفعل في شريط العنوان؟

W3Schools يقول المضيف يحتوي على المنفذ.

هل يجب التحقق من صحة location.host/hostname أم يمكن أن نكون على يقين في IE6 + وجميع الآخرين سيكون موجودًا؟



إذا كنت تصر على استخدام window.location.origin يمكنك وضع هذا في أعلى الرمز الخاص بك قبل قراءة origin

if (!window.location.origin) {
  window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}

Solution

ملاحظة: للسجل ، كان طلب في الواقع لأول مرة. ربما يمكن تحريرها بالفعل. :)


تم الإجابة على سؤالك الأساسي أعلاه. أردت فقط الإشارة إلى أن التعبير المعتاد الذي تستخدمه به خطأ. سينجح أيضًا في foo-domain.com الذي ليس foo-domain.com فرعيًا لـ domain.com

ما تريده حقًا هو:

/(^|\.)domain\.com$/

كمذكرة صغيرة:

-

باختصار (بافتراض موقع http://example.org:8888/foo/bar#bang ):

  • hostname يمنحك example.org
  • host يعطيك example.org:8888




host