从选项页面获取数据到注入的代码

问题描述:

我的扩展在我不控制的现有网页上运行。我想为它提供一个选项页面。我没有想到的是如何从注入的代码中获取选项值。当然,localStorage不是共享的。我试过在两个方向上使用sendRequest/addListener,尽管将选项页面中的值推送到注入的代码比以其他方式推送更为可取。从选项页面获取数据到注入的代码

在开始的时候,我干脆把操作页面(一个代码注入)的选项复选框,这些复选框中localStorage设定值:

localStorage.showStuff = !!$(evt.target).attr(‘checked’); 

然后我检查这些值在代码:

if (localStorage.showStuff == ‘true’) { … } 

我感动的复选框代码到选项页,把它做一个sendRequest当选项改变了,有我注入的代码有消息监听器,但它没有得到消息(我的背景 页面确实如此,但这并不能帮助我)。我也尝试让注入的代码向选项页面回调一个回调,但sendResponse对象似乎只在通知处理程序期间工作(并不令人意外,但我不得不试一试)。

现在我的清单的permissions列出了外文页面("http://example.com/*")和“tab”

有一件事我知道我能做到通过回调异步查询选项页,但这些代码不会(和真的不能)无严重改写异步工作。

任何和所有的想法表示欢迎,在此先感谢。

要记住的是只有背景页面是长寿命的。您的Chrome扩展的其余部分是暂时的(网站导航期间的内容脚本,仅在打开时选项页面等)。

所以,你必须使用短信和保存使用背景页面的东西。但是,准备好即将登陆的存储API。这会让事情变得更容易!

检查出来here

+0

所以,如果我理解你,这意味着我的选项页面应该发送消息到我的背景页面有关选项更改,并且注入的代码应该询问背景页面的值。在我的情况下,注入的代码似乎只要我所在的页面一直存在,这就是我所需要的,但在任何情况下,这仍然使我面临查询与异步问题。但是这些信息很有帮助,我会尝试应用它,谢谢! – kcrca

我是新来的Chrome浏览器扩展,但它从工作完全两者的背景剧本和选项页面,当我试图读/写的localStorage。

我还没有尝试过本地的localStorage但Chrome的存储API。

看看这个

代码A:(套)

chrome.storage.sync.set({'key':'qwe'}); 

代码B:(GET)

chrome.storage.sync.get('key', function(response) { 
    console.log(response); // 'qwe' 
}); 

ü可以把任何代码中的背景和代码B在选项页面或其他方式。 他们正在使用相同的存储。

这对我有用。我希望你也能去那里。

+0

非常感谢你 – Badiparmagi