2016-08-24 11 views
0

Я пишу букмарклет, который читает 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.comlocation.ancestorOrigins[0] используя

Используя это, я написал следующую попытку получить точное имя хоста на любом сайте:

function getHostname() { 
    var previous_hostnames = window.ancestorOrigins; 
    if (previous_hostnames) { 
    return previous_hostnames[0]; 
    } else { 
    return window.hostname; 
    } 
} 

Мне интересно:

  1. Почему это происходит?
  2. Является ли мой подход адекватным?

Можно предположить, что я просто работаю на 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" 
+0

Что о '' location.host' или location.origin'? – Scott

+0

@Scott не работает, см. Обновленный вопрос с доказательством –

+0

Хм, я пробовал оба на этом сайте примеров D3 2000, и оба они возвращают правильный результат. Однако даже «.hostname» работает для меня. Не работает Adblock или что-то в этом роде. Надеюсь, кто-то еще может взвесить это, извините! – Scott

ответ

0

Кажется, ошибка была вызвана одной из моих Chrome расширения (не уверен, что, попытается определить позже).

Отключение всех расширений возвращали правильные location.hostname

+0

Редкий случай, когда «работает на моей машине» полезно! – Scott

 Смежные вопросы

  • Нет связанных вопросов^_^