2016-06-07 56 views
0

我想从后台js获取cookie值。尽管我能够在后台获取cookie值,但bot能够获得cookie值前面的js。获取响应从background.js的铬扩展

我想只从背景js返回值到前面。

front.js

$(document).on("click", ".darkbtn", function (event) { 

     chrome.extension.sendRequest({ msg: "startFunc" },function(d){ 
      console.log(d); 
     }); 
}); 

background.js

function getCookies(domain, name, callback) { 

chrome.cookies.get({"url": domain, "name": name}, function(cookie) { 
    if(callback) { 
     callback(cookie.value); 
    } 
}); 
} 
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){ 
    if(request.msg == "startFunc") 
    { 
     getCookies("http://localhost", "api_key", function(id) { 
     //getCookies("http://developer.chrome.com/extensions/cookies.html", "Sample1", function(id) { 
     sendResponse({data:id}); 
    }); 

       } 
} 
); 

的manifest.json权限

"permissions": [ 
"tabs", 
"storage", 
"cookies", 
"web_accessible_resources", 
"<all_urls>"  
], 

回答

2

您可以使用message passing在扩展和其内容脚本之间建立通信。详细地说,由于内容脚本在网页的上下文中运行而不是扩展,所以它们通常需要某种方式与扩展的其余部分进行通信。

选择不同类型的传递下面根据所列出的信息,你需要什么:

  1. 简单的一次性请求

    如果你只需要发送一条消息给另​​一部分(并可选择回复),则应使用简化的runtime.sendMessagetabs.sendMessage

  2. 长期连接

    有时是有用的,除单个请求和响应持续时间较长的对话。在这种情况下,您可以分别使用runtime.connecttabs.connect,从内容脚本打开一个长期频道到扩展页面,反之亦然。

  3. 跨扩展消息

    除了在扩展发送不同组件之间的消息,您可以使用消息API与其他扩展进行通信。这使您可以公开其他扩展可以利用的公共API。

重要信息,并就如何执行消息传递实例文档中给出。