Я пишу расширение Chrome, где пользователь вводит имена веб-сайтов в popup.html, которые собираются / сохраняются в popup.js.Я хочу запомнить как последний раз, когда пользователь посещал веб-сайт, так и имя веб-сайта, поэтому я сохраняю веб-сайты в chrome.storage.local как объекты, созданные следующим конструктором:
class DelayedSite {
constructor(domain) {
this.lastVisit = 0; /* Stores the timestamp since last visit in seconds. */
this.site = domain; /* The name of the site to delay */
}
/*
* Updates the lastVisit property of the object to hold the
* timestamp in seconds since the last time the site was visited.
*/
visit() {
this.lastVisit = Math.ceil((Date.now())/1000);
}
}
Теперь я хочуобъявите / импортируйте этот тип в contentScript.js, чтобы при получении объектов из локального хранилища они были такого типа.Как я могу это сделать?В настоящее время, когда я получаю объект из chrome.storage.local, функция посещения не определена, и DelayedSite, кажется, не определен (я не могу привести к нему или создать новый объект через него) в contentScript.js.Как ни странно, я могу получить доступ к свойству объекта lastVisit, несмотря на эти другие проблемы.Одна вещь, которую я попробовал, и я думаю, что это наивный подход к проблеме (я новичок в JS, прости меня!), Это копирование и вставка класса так, чтобы он был в обоих файлах.Это ничего не меняет.
В случае, если это облегчает понимание, после вызова chrome.storage.set для сохранения массива объектов DelayedSite в popup.js я обращаюсь к ним с помощью следующего кода в contentScript.js:
chrome.storage.local.get({"addedSites":[], "restTime":60}, (result) => {
let addedSites = result.addedSites;
for (let i = 0; i < addedSites.length; i++) {
let siteObj = addedSites[i];
...
}
...
}
Что касается объекта в 4-й строке, как описано выше: я бы надеялся, что приведение этого к типу DelayedSite заставит его работать и будет иметь метод "посещения", но приведение не будет выполнено, и в текущем кодеМетод посещения не определен.Однако, как уже упоминалось, siteObj.lastVisit работает.