Получить имя верхнего хоста href по клику

0

У меня есть ссылка, где я хочу получить доменное имя верхнего уровня для домена. В моем примере у меня есть

    <a href="http://www.example.com/this/that">click on this link</a>

Когда я нажимаю на нее, я хочу, чтобы

www.example.com

Я знаю, что window.location.host делает это для фактического местоположения сайта, но я не уверен, как получить это для отдельного href. Я попробовал ниже, но он возвращает

    jQuery(document).on("click", "a", function (event) {
        event.preventDefault();
        var id = jQuery(this).attr('href') || 'nohref';
        alert(window.location.host);
        alert(id);
    });

http://www.example.com/this/that

а не www.example.com

Каков наилучший способ достичь этого?

Теги:

4 ответа

3
Лучший ответ

Это довольно просто, нет необходимости в регулярном выражении:

jQuery(document).on("click", "a[href]", function (event) {
    event.preventDefault();
    alert(this.hostname);
});

См. MDN - HTMLAnchorElement.

Я не уверен, работает ли он в Internet Explorer.

2

Пытаться

jQuery(document).on("click", "a", function (event) {
    event.preventDefault();
    var id = jQuery(this).attr('href') || 'nohref';
    var domain = id.match(/http[s]?\:\/\/(.*?)[\/$]/)[1]
    alert(domain);
});
  • 1
    Технически регулярное выражение будет работать, но оно не очень оптимально. Кроме того, попытка использовать это [1] приведет к ошибке, если регулярное выражение не совпадает
1
var domain = jQuery(this).attr('href').match(/^https?:\/\/([^\/]+)/);
if (domain != null && typeof domain[1]!='undefined')
  domain = domain[1];
else
  domain = '';
0

Вы можете взять удар по использованию document.domain, хотя он не так широко поддерживается, как window.location.host.

  • 1
    нет. он пытается извлечь домен из атрибута href тега привязки, а не получить домен с текущей страницы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню