我的Chrome扩展程序有两种状态: 1.某些站点在localStorage(另一个域)中有auth数据,所以我必须显示主窗口。 2.没有身份验证数据,因此我必须以登录名和密码形式显示窗口。
为了定义是否提供了auth数据,我想查看他的localStorage,但看起来这是不可能的。
但是,#define
和chrome.storage.local.get
适用于localStorage的扩展。
或者有办法做到这一点 - 访问另一个站点的localStorage吗?
答案 0 :(得分:2)
是的,您可以在页面上执行脚本以访问本地存储。您可以通过几种不同的方式执行此操作,包括内容脚本或注入的脚本。
我使用chrome-extension-async
获得async
/ await
支持。
例如popup.js
document.addEventListener('DOMContentLoaded', async () => {
try {
const key = "foobar"
// Get the current tab
const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
const tab = tabs[0];
// Execute script in the current tab
const fromPageLocalStore = await chrome.tabs.executeScript(tab.id, { code: `localStorage['${key}']` });
// Store the result
await chrome.storage.local.set({[key]:fromPageLocalStore[0]});
}
catch(err) {
// Log exceptions
}
});