Расширение Chrome: Как сделать url.hostname строкой, чтобы ее можно было использовать в качестве ключа в словаре? - PullRequest
0 голосов
/ 25 мая 2018

Я сохраняю посещенные домены в словарь, выполняя (соответствующий фрагмент моего кода):

const url = require('url');
let domainDict = {};
let currentDomain;

chrome.tabs.onUpdated.addListener(function(tabid, changeInfo, tab){
    chrome.tabs.query({'active' : true, 'currentWindow': true}, function(tabs){
        let newUrl = new URL(tabs[0].url);
        currentDomain = newUrl.hostname;
        domainDict[currentDomain] = currentTimer;
    });
});

, что позволяет console.log(domainDict); печатать только [object Object] независимо от того, сколько доменов я добавляюсловарь.Как ни странно, я могу вытащить правильное значение, используя правильный ключ домена, но я получаю предупреждение, что каждый ключ должен быть уникальным, и я получаю ошибку, которая возникает, когда я пытаюсь отобразить и отобразить словарь, он отображает каждую пару ключ-значение на каждой итерации.

Я пытался currentDomain = url.format(newUrl.hostname) и даже реализовывал попытку использования функции для ее строкового преобразования:

currentDomain = urlToString(url.hostname)

function urlToString(url) {
    return "Domain: " + url;
}

, но оба эти решениявыдают все те же проблемы и ошибки.

1 Ответ

0 голосов
/ 25 мая 2018

Из описания, похоже, нет проблем ни с currentDomain, ни с url.hostname.Происходит следующее: консоль Chrome печатает ваш словарь в формате, который вам не нужен.

Попробуйте что-то вроде:

console.log('My dict ', domainDict);

или

console.log(JSON.stringfy(domainDict)); 

И вы должны увидеть, что словарь и его ключи верны.

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