2012-12-29 47 views
0

我已经想出了如何在用户明确地完成每个页面加载脚本时运行脚本,但是我希望每次运行脚本时它会在其后端自行向数据库或广告发送帖子或获取请求服务器隐式。 [例如,在gmail上,如果我们密切关注请求(可能是firebug - console - all),我们会看到在特定时间POST请求被浏览器自己触发。 ]Chrome扩展程序run_at每次发布的发布请求都是?

有什么办法可以做到吗?

其实我正在写我的第一个扩展,所以它清楚地表明我不太了解它。

回答

2

你应该在你的扩展中使用webRequest模块。

"permissions": [ 
    "webRequest", 
    "*://*/*" 
    ], 
"background": { 
    "scripts": ["background.js"] 
}, 

,你可以在你的后台页面注册(“background.js”中的例子)所需的任何处理,如onBeforeRequestonBeforeSendHeadersonHeadersReceivedonCompleted和:在清单specifing适当的权限,例如后其他。我认为这些名字是自我解释的,但你可以参考上述文件。

根据您的要求,您可以定义阻止请求,修改标头,只读并以某种方式分析http标头的事件处理程序。

实施例用于读出HTTP标头和可能改变它们:

chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) 
{ 
    console.log(details.url); 
    if(details.method == 'POST') 
    { 
    // do some stuff 
    for(var i = 0; i < details.requestHeaders.length; ++i) 
    { 
     // log or change some headers 
     // details.requestHeaders[i].name 
     // details.requestHeaders[i].value 
    } 
    } 

    return {requestHeaders: details.requestHeaders}; 
}, 
{urls: ["<all_urls>"]}, 
["blocking", "requestHeaders"]);