2014-09-08 3 views
0

Я пытаюсь получить domain.com от www.domain.com или www.domain.com/fdfds/fsdfd.php или domain.comКак показать имя домена без WWW, но и работать, даже если пользователь вводит domain.com (без WWW)

var parts = location.hostname.split('.'); 
var subdomain = parts.shift(); 
var upperleveldomain = parts.join('.'); 
alert(upperleveldomain); 

Однако это работает если домен имеет www. но он не работает без www. Это дает мне только com

Как это исправить? Какие-нибудь разные предложения?

+0

Подкатегория не является частью вашего доменного имени. Путь после него - это либо переменные пути Apache, либо параметры GET (после '?'). Вы должны получить их отдельно от своего доменного имени. – 2014-09-08 19:20:22

+0

OP не заботится о строке запроса, они просто пытаются получить domain.com - так что пока это правда, это не имеет значения. –

ответ

0

Вы используете parts.shift(); во всех случаях, который удаляет первый элемент массива. Вы хотите, чтобы этот первый элемент был удален, если он содержит строку www, поэтому вам просто нужно проверить это условие и shift() только в том случае, если присутствует www.

var parts = location.hostname.split('.'); 
if(parts[0] === "www") { 
    parts.shift(); 
} 
var upperleveldomain = parts.join('.'); 
alert(upperleveldomain); 

Вы, вероятно, может также решить эту проблему с помощью регулярного выражения, если бы вы были так склонны - но вы придумали довольно простой способ сделать это, который должен быть один твик далеко от работы.

+0

Спасибо за ответ, но я нашел много регулярных выражений, никто из них не работает ... Я думаю, что это довольно простая вещь, и это сводит меня с ума – EnexoOnoma

+0

Действительно - первый абзац моего ответа должен исправить вашу проблему. Вам просто нужно проверить, является ли первый элемент в вашем массиве «www», а если нет, не делайте .split(). –

+0

@Xalloumokkelos - этот ответ работал для вас? Было бы полезно, если бы вы приняли любой ответ, который поможет вам исправить вашу проблему, так как это хорошие ответы для будущих посетителей! –

0

Как было предложено Billy Moonhere просто заменить «WWW» часть имени хоста с пустой строкой, и вы (предположительно) ближе к тому, что вы хотите:

var strLocation = location.host.replace('www.',''); 
alert(strLocation); 

Проблема в том, что вы Расщепление ваше доменное имя в массив символом периода, а затем выбрасывает первую часть этого массива. Это означает часть имени хоста, если URL-адрес равен example.org и www-стороне, если URL-адрес равен www.example.org.

0

Одним из вариантов может быть (редактирование кода):

var parts = location.hostname.split('.'); 

if(parts[0].localeCompare("www") == 0) 
    var subdomain = parts.shift(); 

var upperleveldomain = parts.join('.'); 

alert(upperleveldomain); 

Или вы можете просто заменить WWW. с пустой строкой:

var newHostname = location.hostname.replace("www.",""); 
alert(newHostname); 
Смежные вопросы