我已经想出了如何在用户明确完成时在每次页面加载时运行脚本,但我想在每次它自己向数据库或广告服务器发布帖子或获取请求时运行我的脚本. [例如在 gmail 上,如果我们密切关注请求(可能是 firebug - 控制台 - 全部),我们将看到在特定时间后,浏览器会自行触发 POST 请求。]
有什么办法可以做到吗?
实际上,我正在编写我的第一个扩展程序,因此它清楚地表明我对此知之甚少。
我已经想出了如何在用户明确完成时在每次页面加载时运行脚本,但我想在每次它自己向数据库或广告服务器发布帖子或获取请求时运行我的脚本. [例如在 gmail 上,如果我们密切关注请求(可能是 firebug - 控制台 - 全部),我们将看到在特定时间后,浏览器会自行触发 POST 请求。]
有什么办法可以做到吗?
实际上,我正在编写我的第一个扩展程序,因此它清楚地表明我对此知之甚少。
你应该在你的扩展中使用webRequest模块。在清单中指定适当的权限后,例如:
"permissions": [
"webRequest",
"*://*/*"
],
"background": {
"scripts": ["background.js"]
},
您可以在后台页面(示例中的“background.js”)中注册任何所需的处理程序,例如onBeforeRequest
、onBeforeSendHeaders
、onHeadersReceived
、onCompleted
等。我认为这些名称是不言自明的,但您可以查阅上述文档。
根据您的要求,您可以定义阻止请求、修改标头、仅读取并以某种方式分析 http-headers 的事件处理程序。
读取 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"]);