我已经想出如何在用户明确地完成每个页面加载时运行脚本,但是我希望每次发布帖子或在后端获取请求时自己运行我的脚本到数据库或者隐式广告服务器。 [例如,如果我们继续关注请求(可能是firebug - console - all),我们会看到在某段时间后,POST请求会自动从浏览器中被触发。 ]
我有什么方法可以做到吗?
实际上我正在写我的第一个扩展,所以它清楚地表明我对它不太了解。
答案 0 :(得分:2)
您应该在扩展程序中使用webRequest模块。在清单中指定适当的权限后,例如:
"permissions": [
"webRequest",
"*://*/*"
],
"background": {
"scripts": ["background.js"]
},
您可以在后台页面(示例中为“background.js”)注册任何所需的处理程序,例如onBeforeRequest
,onBeforeSendHeaders
,onHeadersReceived
,onCompleted
,和别的。我认为这些名称是自我解释的,但您可以参考上述文件。
根据您的要求,您可以定义事件处理程序,这些事件处理程序可以阻止请求,修改标题,只需读取并以某种方式分析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"]);