2011-10-04 99 views
7

我正在写一个Chrome扩展,需要做到以下几点上运行:Chrome扩展:内容脚本在所有网页上运行,另一个只有一个页面

  • 注入内容脚本到当前(当弹出火灾
  • 注入不同的内容脚本转换为特定域的所有页面,总是

到目前为止,我的第一个实现,通过在popup.html文件调用chrome.tabs.executeScript()并具有以下任何)页面在清单中允许脚本的任何网页上运行:

"permissions": [ 
    "tabs", "http://*/*" 
], 

现在,根据http://code.google.com/chrome/extensions/content_scripts.html,如果我想要一个内容脚本总是在特定页面上运行,我必须在清单并设置权限宣布它仅包含的页面代码应该运行。但是,这将打破第一部分。

我该如何解决这个问题?我能想到的唯一方法是总是调用某种“调用者”脚本,然后自己检查和加载其他脚本,但这似乎很杂乱,并且我认为是更好的方法。

+0

感谢您修复标签!我不知道后者是否存在:) – Mala

回答

12
{ 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["myscript.js"] 
    } 
    ], 
    "permissions": [ 
    "tabs", "http://*/*" 
    ] 
} 

myscript.js被自动注入到google.com,你仍然可以手动注入到http://*/*

+0

快速后续问题 - 'myscript.js'无法访问与扩展的其余部分相同的localStorage。如果扩展中的某个选项(存储在localStorage中)被设置,我真的只想运行'myscript.js' ...我该怎么做? – Mala

+1

@Mala你需要发送一个请求到后台页面,在那里读localStorage,然后把结果传回去。请参阅http://code.google.com/chrome/extensions/dev/messaging.html – serg

+0

真棒,谢谢,得到它的工作:)我只希望Firefox扩展一样容易 – Mala

相关问题