javascript - 如何使用backgroundpage保留在注入(inject)js中使用的值?

标签 javascript google-chrome-extension

{  
    "name": "coffee",
    "manifest_version":2,
    "version": "1.0",  
    "description": "coffee test",  
    "browser_action": {  
       "default_icon": "icon.png" ,
       "default_title": "My Task List",
        "default_popup": "popup.html"
     },
  "background": {
    "scripts": ["background.js"]
  },
     "content_scripts": [{
         "matches": ["http://*/*","https://*/*" ], 
         "js": ["inject.js"], 
         "run_at": "document_end",
         "all_frames": true 
    }],
    "permissions": [   
     "tabs", "http://*/*","https://*/*"  
    ]   
}

list .josn

count=1;

背景.js

var bgpg=chrome.extension.getBackgroundPage();
if(bgpg)
{
    alert("ok");
    if(bgpg.count>=0){
        bgpg.count=bgpg.count+1;
    }else{
        bgpg.count=0;
    }
    alert(bgpg.count);

}else{alert("NO");}

注入(inject).js。

它没有改变任何东西。事实上,上周我成功地使用了背景值,但今天我完全找不到我错在哪里。

最佳答案

内容脚本无法调用 chrome.extension.getBackgroundPage(),这对它来说权限太高了。

出于安全原因内容脚本 have very limited access to Chrome APIs 。后台页面具有完全访问权限,因此禁止直接操作它。您的代码抛出错误并停止。

However, content scripts have some limitations. They cannot:

  • Use chrome.* APIs, with the exception of:
    • extension ( getURL , inIncognitoContext , lastError , onRequest , sendRequest )
    • [...]

您将需要使用Messaging与后台页面通讯;但是,如果您需要的只是一些数据,您可以尝试使用 chrome.storage - 它由两者共享。

关于javascript - 如何使用backgroundpage保留在注入(inject)js中使用的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913946/

相关文章:

javascript - 在 Chrome 扩展 list 中指定自定义 key ?

jquery - 使用externally_connectable将数据从WWW发送到Chrome扩展程序

javascript - 将编辑和删除选项推到最右侧可能吗?

css - 从检查器(webkit、firebug 等)导出 CSS 更改

google-app-engine - 为什么 Google App Engine Channel API (jsapi) 无法在 Chrome 扩展程序中加载?

javascript - 如何将静态 Assets 打包到 gem 中以便在 Sinatra 应用程序中使用?

javascript - 从 Chrome 扩展发送 POST 请求

javascript - 3 个变体所需的正则表达式全部开头相同,并且必须是这三个变体之一

javascript - 需要从不安全的 URL 调用数据以获取 Chrome 的 GCM 推送通知

javascript - 不再支持 JSpec?