Я пишу букмарклет, который читает location.hostname
текущей страницы.location.hostname некоторых веб-страниц неточно
На большинстве сайтов это работает отлично, то есть для https://stackoverflow.com/questions/ask оно возвращает http://stackoverflow.com
.
Но на некоторых сайтах это не работает. Например, на http://techslides.com/over-2000-d3-js-examples-and-demos он возвращает googleads.g.doubleclick.net
.
Я понял, что я могу получить «оригинального» имени хоста http://techslides.com
location.ancestorOrigins[0]
используя
Используя это, я написал следующую попытку получить точное имя хоста на любом сайте:
function getHostname() {
var previous_hostnames = window.ancestorOrigins;
if (previous_hostnames) {
return previous_hostnames[0];
} else {
return window.hostname;
}
}
Мне интересно:
- Почему это происходит?
- Является ли мой подход адекватным?
Можно предположить, что я просто работаю на Chrome, если это упростит ситуацию.
Chrome сборки:
Version 52.0.2743.116 (64-bit)
Platform 8350.68.0 (Official Build) stable-channel orco
Firmware Google_Orco.5216.362.7
в ответ на комментарии
ни location.host
или location.origin
работы
location.host
"googleads.g.doubleclick.net"
location.origin
"https://googleads.g.doubleclick.net"
Что о '' location.host' или location.origin'? – Scott
@Scott не работает, см. Обновленный вопрос с доказательством –
Хм, я пробовал оба на этом сайте примеров D3 2000, и оба они возвращают правильный результат. Однако даже «.hostname» работает для меня. Не работает Adblock или что-то в этом роде. Надеюсь, кто-то еще может взвесить это, извините! – Scott