Плагин Google Chrome: как получить домен по URL (tab.url) - PullRequest
15 голосов
/ 11 сентября 2010

Используя значение tab.url API Google Chrome , как лучше всего получить домен из всего значения?

В JavaScript я бы использовал window.location.protocol & window.location.hostname.Например, что-то вроде этого:

var domain = window.location.protocol + "//" + window.location.hostname;

Но он получает домен расширения, а не вкладку, поэтому не может использовать этот метод.Так что с функцией, аналогичной приведенной ниже ... Как бы я удалил только домен из значения tab.url?

function show_alert() {
    chrome.tabs.getSelected(null, function(tab) {
        var currentURL = tab.url;
        alert(currentURL);
    });
}

Ответы [ 3 ]

35 голосов
/ 27 мая 2016

Поскольку на этот вопрос первоначально был дан ответ, появилось лучшее решение.

Большинство современных браузеров теперь поддерживают использование конструктора URL , который обеспечивает доступ к href, hostname, path и все стандартные способы разделения URL.

Чтобы получить домен, вы можете сделать следующее:

chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
  var tab = tabs[0];
  var url = new URL(tab.url)
  var domain = url.hostname
  // `domain` now has a value like 'example.com'
})
17 голосов
/ 11 сентября 2010

Прежде всего, домены не включают протокол.Я создал регулярное выражение для вашей проблемы.Чтобы получить имя хоста (вы хотите сделать это, поскольку IP-адреса не являются доменами) URI, используйте следующее:

var domain = uri.match(/^[\w-]+:\/{2,}\[?([\w\.:-]+)\]?(?::[0-9]*)?/)[1];
// Given uri = "http://www.google.com/", domain == "www.google.com"

Если вы хотите источник (протокол + хост (не имя хоста,есть разница) + дополнительный порт) вместо домена используйте следующий :

var origin = uri.match(/^[\w-]+:\/{2,}\[?[\w\.:-]+\]?(?::[0-9]*)?/)[0];
// Given uri = "http://www.google.com/", origin == "http://www.google.com"
1 голос
/ 04 января 2019
chrome.tabs.query(
  {
    active: true,
    currentWindow: true
  },
  ([currentTab]) => {
    const url = new URL(currentTab.url);
    const domain = url.hostname;
    console.log(domain);
  }
);

комбинация: https://stackoverflow.com/a/37486863/8023318, но без использования амортизированных getSelected и https://stackoverflow.com/a/48755190/8023318. хотела бы узнать, можно ли это сделать с помощью getCurrent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...