我怎样才能获得options.html中设置的选项?

时间:2012-03-02 23:36:05

标签: javascript google-chrome-extension

我仔细阅读Google Chrome Extensions Developer's Guide,它告诉我在localStorage中保存选项,但content_scripts如何能够访问这些选项?

样品:

我想为几个域编写脚本,这个脚本应该在这些域上共享一些选项。

content_scripts:

//Runs on several domains
(function(){
    var option=getOptions();
    //Get options which have been set in options.html
    if(option){
        doSome();
    }
})

option_page:

<html>
    <head>
        <title>My Test Extension Options</title>
    </head>
    <body>
        option: <input id="option" type="text" /><br />
        <input id="save" type="submit" /><br />
        <span id="tips">option saved</span>
        <script type="text/javascript">
            (function(){
                var input=document.getElementById('option');
                var save=document.getElementById('save');
                var tips=document.getElementById('tips');
                input.value=localStorage.option||'';
            // Here localStorage.option is what I want content_scripts to get.
                function hideTips(){
                    tips.style.visibility='hidden';
                }
                function saveHandler(){
                    localStorage.option=input.value||'';
                    tips.style.visibility='visible';
                    setTimeout(hideTips,1000);
                }
                hideTips();
                save.addEventListener('click',saveHandler);
            })();
        </script>
    </body>
</html>

1 个答案:

答案 0 :(得分:2)

我认为您可以使用chrome.extensions。* API来创建与您的扩展ID下运行的后台页面的通信线路,从而为您提供本地存储。

我认为这是可能的,因为Content Script文档指定chrome.extensions * API可供内容脚本使用。但我从未尝试过这个。

然后,您必须在建立连接时将消息从后台页面发送到内容脚本。您甚至可以使用文字对象中的所有设置发送一条消息。

Here is an example创建我之前写过的双向沟通​​。您可以实现此功能或创建自定义解决方案,但我认为这是您实现所需目标的方式。