【问题标题】:Is it possible to get access to my chrome extension localStorage from my website?是否可以从我的网站访问我的 chrome 扩展 localStorage?
【发布时间】:2013-06-19 12:54:21
【问题描述】:

我构建了一个 chrome 扩展,将数据从后台页面保存到 localStorage(使用 chrome.storage.sync.set)。

现在,假设我想建立一个网站并从网站访问 localStorage 上的扩展数据,是否可以从网站域访问这些数据?也许我可以在清单文件中添加一些内容以允许这样做?

【问题讨论】:

  • 嗯,我不认为你可以做到这一点。浏览器上的应用程序(包括 chrome-extensions)在沙箱中工作,因此无法访问其他应用程序的资源。

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


【解决方案1】:

您必须将内容脚本注入您的网站,然后让您的后台脚本将 localStorage 传递给您的内容脚本。至于你的内容脚本和你网站上的脚本之间的通信,你必须要有创意。

【讨论】:

    【解决方案2】:

    我在这里假设您知道内容脚本和后台脚本之间的消息传递过程。

    现在,我认为您的网站无法向扩展程序发出请求并从中“提取”数据,但您当然可以让您的扩展程序将数据“推送”到您的网站。

    你可以这样做:

    内容脚本

    内容脚本应检查网站中打开的网站是否是您的网站,例如 www.yourwebsite.com

    if (currentUrl == "www.yourwebsite.com")
    {
      ....
    }
    

    如果确实是你的网站,从后台脚本中拉取需要的数据

    if (currentUrl == "www.yourwebsite.com")
    {
      chrome.extension.sendRequest({ "getLocalStorageData": true, "dataFieldName": "favouriteColor" }, handleLocalStorageResult);
    }
    
    function handleLocalStorageResult(dataValue)
    {
      .....
    }
    

    在handleLocalStorageResult方法中接收到数据后,将数据注入页面的html,以便您网站的javascript可以读取它

    if (currentUrl == "www.yourwebsite.com")
    {
      chrome.extension.sendRequest({ "getLocalStorageData": true, "dataFieldName": "favouriteColor" }, handleLocalStorageResult);
    }
    
    function handleLocalStorageResult(dataValue)
    {
      var localStorageDataDiv = $('<div>').appendTo('body');
      localStorageDataDiv.attr('id', 'extensionData');
      localStorageDataDiv.html(dataValue);
    }
    

    您网站的 Javascript

    现在您网站的 javascript 可以读取数据

    var data = $('#extensionData').html();
    alert('My Extension's LocalStorage Data is ' + data);
    

    【讨论】:

      【解决方案3】:

      迄今为止的答案并未提及内容脚本和网页共享它们的localStorage 对象。如果您的内容脚本写入localStorage,网页稍后将能够读取它,反之亦然。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-10
        相关资源
        最近更新 更多