Chrome扩展程序:如何使url.hostname成为字符串,以便它可以用作字典中的键?

时间:2018-05-25 17:45:43

标签: javascript string google-chrome google-chrome-extension

通过执行(我的代码的相关摘录)将访问过的域名保存到字典中:

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 :(得分:0)

根据说明,currentDomainurl.hostname似乎不是问题。发生的事情是Chrome控制台正在以对您无用的格式打印字典。

尝试类似:

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

或者

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

你应该看到字典及其键是正确的。