内容脚本中chrome扩展的管理权限

时间:2015-05-13 11:51:41

标签: google-chrome-extension

我有一个Chrome扩展程序,应检查是否有另一个扩展程序,并在/Mvc中为每个网页添加div,如果不是的话。所以我把它放在清单中:

my-website.com

在我的内容脚本中有这个:

"background": {
    "scripts": ["background.js"]
},

"content_scripts": [
    {
        "matches": ["http://my-website.com/*"],
        "js": ["content.js"],
        "run_at": "document_end",
        "all_frames": true
    }
],

"permissions": [
    "<all_urls>",
    "management",
    "activeTab",
    "webRequest",
    "webRequestBlocking"
]

但是我得到了

chrome.management.getAll(function (apps) {
   /* Manipulate DOM */
});

在网页上。但是,当我打开扩展程序的开发工具(chrome:// extensions - &gt; background.js)时,我可以使用Uncaught TypeError: Cannot read property 'getAll' of undefined 就好了。如何在内容脚本上使用chrome.management(或做同等的事情)?

1 个答案:

答案 0 :(得分:3)

可能的是,您的内容脚本要求后台脚本获取已安装的应用列表。

将其放入内容脚本中。

 chrome.runtime.sendMessage({messageName: 'getAllApps'}, function(apps) {
// do what you want in with the apps list
});

并在后台脚本中侦听请求并返回应用列表

chrome.runtime.onMessage.addListener(
        function(message, sender, sendResponse) {
           if(message.messageName === 'getAllApps') {
             chrome.management.getAll(function (apps) {
                 sendResponse(apps); 
             });
           }
        }
 );

修改

就像在帖子的评论中所说,内容脚本对chrome api See HERE的访问权限有限,这就是为什么唯一的解决方案是与可以访问所有内容的后台脚本进行通信。