Chrome Ext: строка запроса Javascript для имени хоста - PullRequest
0 голосов
/ 30 ноября 2018

Примечание.Это не запрос URL-адреса, который вы получаете от window.location

Я использую chrome.webRequest.onBeforeRequest.addListener, который возвращает детали.Эти данные:

{
    frameId: 0,
    method: "GET",
    parentFrameId: -1,
    requestId: "687379",
    tabId: 1721765993,
    timeStamp: 1543573944865.511,
    type: "main_frame",
    url: "https://stackoverflow.com"
}       

, что означает, что единственный URL, который я могу получить, используя details.url, является строкой в ​​возвращении.В этом примере это:

url: "https://stackoverflow.com"

Я хочу иметь возможность получить только имя хоста:

stackoverflow.com

Проблема возникает при наличии https или http. Если есть поддомен или есть дополнительные пути.

Как получить только имя хоста?

1 Ответ

0 голосов
/ 30 ноября 2018

Вот небольшая хитрость, которую я использую:

function processUrl(url) {
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;

}

и затем передайте свой details.url этой функции.

Это создает элемент, и механизм браузера обрабатывает элемент a, определяет ваше имя хоста и т. Д. Таким образом, вы можете вернуть a.hostname.

Редактировать

Как упоминалось ниже, это может быть немного устаревшим.Еще одно отличное решение:

function processUrl(url) {
    return new URL(url).hostname
}
...