我可以从chrome扩展程序访问localStorage网站吗?

时间:2017-03-27 15:45:59

标签: google-chrome google-chrome-extension local-storage

我的Chrome扩展程序有两种状态:  1.某些站点在localStorage(另一个域)中有auth数据,所以我必须显示主窗口。  2.没有身份验证数据,因此我必须以登录名和密码形式显示窗口。

为了定义是否提供了auth数据,我想查看他的localStorage,但看起来这是不可能的。

但是,#definechrome.storage.local.get适用于localStorage的扩展。

或者有办法做到这一点 - 访问另一个站点的localStorage吗?

1 个答案:

答案 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
    }
});