Как получить имя/имя домена реферера с помощью JavaScript?
Я знаю, что могу получить имя хоста текущей страницы, просто сделав:
var myhostname = location.hostname;
Но как получить имя хоста для реферера? Я могу получить реферер
var referrer = document.referrer;
но, к сожалению, там нет document.referrer.hostname
, доступных в JavaScript. Как я могу получить это значение?
Примером того, где это полезно, является то, что кто-то нажимает ссылку на google.com. Я хочу иметь возможность извлекать google.com из реферера (а не страницы и строки запроса).
Ответы
Ответ 1
Разбираем его. document.referrer.split( '/' );
приблизит вас. Или взгляните на это
http://blog.stevenlevithan.com/archives/parseuri
Если реферер поступает из браузера, он будет нормальным - но на всякий случай вам нужен более сильный анализ.
Ответ 2
Это сделало бы:
document.referrer.split('/')[2];
Пример.
Ответ 3
function parseURL(url) {
var a=document.createElement('a');
a.href=url;
return a.hostname;
}
Это относительно старый вопрос, тем не менее это может помочь любым последователям.
Ответ 4
Вы можете использовать var referrer = new URL(document.referrer).hostname
.
См. https://developer.mozilla.org/en-US/docs/Web/API/URL.URL.
Ответ 5
Вы можете использовать regexp для извлечения этих данных.
string.match(/^http([s]?)://([a-zA-Z0-9-_\.]+)(:[0-9]+)?/);
Ответ 6
Он включает протокол, но document.origin
будет работать. Он работает через заголовок Origin, который не содержит информации о пути, включенной в него.
Ответ 7
Привет, используйте эту функцию, чтобы получить доменное имя.
function getDomain(url) {
if (url) {
var match = /(?:https?:\/\/)?(?:\w+:\/)?[^:?#\/\s]*?([^.\s]+\.(?:[a-z]{2,}|co\.uk|org\.uk|ac\.uk|org\.au|com\.au))(?:[:?#\/]|$)/gi
.exec(url);
return match ? match[1] : null;
} else
return null;
}