Определить хост в URL с поддоменом - PullRequest
0 голосов
/ 28 августа 2018

, если есть несколько URL:

  • sub1.sub.example.com

  • sub2.sub.example.com

  • sub3.sub.example.com

  • sub4.sub.example.com

  • и т.д.

Как я могу определить, является ли имя хоста something.sub.example.com?

Что я пробовал, который не работает:

if (window.location.hostname == "*.sub.example.com") {
  //actions 
}

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

String (object) Prototype содержит удобный метод с именем includes()

Таким образом, вы можете взять любой имеющийся строковый аргумент и использовать следующий код

function ddcc(what){ // ddcc - domain dot com check
  return what.includes('sub.example.com');
}

var test = 'wwww.madeup.sub.example.com';
console.log(ddcc(test));

// so in practice - if ddcc(window.location.hostname) { .. } will do the trick

Должен служить вам очень хорошо.


РЕДАКТИРОВАТЬ: Если вы настаиваете на том, что .hostname заканчивается sub.example.com и ничем иным:

function ddcc(what) { // ddcc - domain dot com check
  return what.includes('sub.example.com') ?
    what.substring(what.indexOf('sub.example.com'), what.length) === 'sub.example.com' :
    false;
}

var test = 'madeup.sub.example.com.fakelink';
console.log(ddcc(test));

Как видите, я добавил .fakelink к нашей переменной test. Несмотря на то, что он включает sub.example.com, он все равно возвращается как false.

0 голосов
/ 29 августа 2018

Я считаю, что вы можете использовать String#endsWith, чтобы делать именно то, что вы хотите:

if (window.location.hostname.endswith(".sub.example.com")) { . . . }

Как отметил Джейк Хольцингер в комментариях, IE не поддерживает String#endsWith. Простое решение регулярных выражений, которое будет иметь лучшую совместимость, будет

// This is a Regular Expression literal meaning
// a string ending with ".sub.example.com" (case-insensitive)
var regexSubdomainPattern = /\.sub\.example\.com$/ig;
if (regexSubdomainPattern.test(window.location.hostname)) { . . . }
...