- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在重构一个现有的 chrome 扩展,我调用了 chrome.webRequest.onBeforeSendHeaders
,它应该根据当前选择的选项卡进行过滤。
我正在使用文档 here并且,关于过滤,它指出:
The webRequest.RequestFilter filter allows limiting the requests for which events are triggered in various dimensions:
URLs URL patterns such as *://www.google.com/foo*bar. Types Request types such as main_frame (a document that is loaded for a top-level frame), sub_frame (a document that is loaded for an embedded frame), and image (an image on a web site). See webRequest.RequestFilter. Tab ID The identifier for one tab. Window ID The identifier for a window.
据我所知,如果我将 tabid 定义为监听器的一部分,我应该根据选项卡 ID 过滤所有请求(因此,只捕获来自该特定选项卡的请求 header )。
问题是这不会发生。当我采用 tabid:xx 过滤器时,我不断捕获来 self 打开的各种选项卡的所有请求。
我错过了什么?
这是我的后台脚本 background.html 示例代码:
var currentTabId = -1;
chrome.tabs.getSelected(null, function(tab){
currentTabId = tab.id;
console.log("tab id in getselected "+currentTabId);
});
chrome.webRequest.onBeforeSendHeaders.addListener(
function(req){
console.log("-> Request Headers received for "+req.url);
console.log('onBeforeSendHeaders tab id: '+currentTabId)
console.log('onBeforeSendHeaders: '+JSON.stringify(req))
}
, { urls:["http://*/*", "https://*/*"], tabId: currentTabId }, ['requestHeaders','blocking']);
currentTabId 例如1666 而对象请求中的 tabId 是另一个,它可能来 self 打开和正在使用的任何选项卡(在 1666 上未被过滤掉)。
最佳答案
您的示例代码执行顺序错误; chrome.tabs.getSelected
是异步的。
var currentTabId = -1;
chrome.tabs.getSelected(null, function(tab){
currentTabId = tab.id;
// Here, currentTabId is defined properly
console.log("tab id in getselected "+currentTabId);
});
// Here, it is still -1
您需要将 addListener
调用移动到 getSelected
回调中:
chrome.tabs.getSelected(null, function(tab){
currentTabId = tab.id;
console.log("tab id in getselected "+currentTabId);
chrome.webRequest.onBeforeSendHeaders.addListener(/*...*/);
});
关于javascript - Chrome 扩展 WebRequest 按 tabId 过滤不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24538439/
我正在使用 Chrome 扩展程序捕获所有网络数据。 我刚刚发现更改地址栏会导致 tabId 更改。任何人都对 tabId 何时发生变化有一个完整的想法? 最佳答案 绝不是权威答案: 它与预渲染有关,
我有一个选项卡的 tabId。我如何获取它的窗口对象? 最佳答案 在 chrome 扩展中看到的窗口对象: chrome.tabs.get(YOUR_TAB_ID_HERE, function(ta
我需要知道 chrome tabId 在所有打开的窗口中是否唯一。隐身和正常。是否保证所有窗口中打开的选项卡都不会具有相同的 tabId ? 我搜索了文档,但找不到任何可靠的答案。 最佳答案 是的,选
我是 chrome 扩展编程的新手,这是/将是我的第一个扩展。 我想要的 :现在我想为页面做一个pageAction,如果显示了某个html-tag。要执行 pageAction 似乎我必须知道当前选
在我的网络扩展中,我根据用户指示扩展执行的操作将多个相同的监听器添加到不同的选项卡 ID。 browser.webRequest.onBeforeRequest.addListener(mycallb
我需要知道 chrome tabId 在所有打开的窗口中是否唯一。隐身和正常。是否保证所有窗口中打开的选项卡都不会具有相同的 tabId ? 我搜索了文档,但找不到任何可靠的答案。 最佳答案 是的,选
在 Firefox/Chrome WebExtension 中,当您从后台脚本向弹出窗口发送消息时,您无法使用 tabId,因为弹出窗口没有 tabId。所以你必须使用: chrome.runtime
我正在使用 onUpdate 事件监听器,但在加载完成之前和之后获得不同的 tabId: chrome.tabs.onCreated.addListener(function(tab){ va
我有一个 chrome 扩展,当用户按下图标时,它将当前的 tab.id 存储在变量中,然后在 2 分钟后运行 chrome.tabs.executeScript函数。据我所知,我的代码应该可以工作,
我在后台脚本中编写了以下简单代码: chrome.tabs.onActivated.addListener(function (info) { console.log(info.tabId);
我一直在试验 chrome 扩展 API,我注意到 chrome.tabs.sendMessage 没有将 tabId 作为 发件人传递 但另一个 id/ 哈希字符串与 tabId 不对应。有谁知道这
我正在重构一个现有的 chrome 扩展,我调用了 chrome.webRequest.onBeforeSendHeaders,它应该根据当前选择的选项卡进行过滤。 我正在使用文档 here并且,关于
我的实现方式有误吗?我正在打开一个新选项卡,然后向该选项卡发送一条消息,但随后所有其他带有监听器的选项卡也会收到该消息。 在 background.js 中: chrome.tabs.create({
我应该提前提到我是代码/stackoverflow 的新手,所以如果这个问题没有意义,我深表歉意。我被难倒了,我正在尝试构建一个 chrome 扩展程序来保存 ip 地址、url 和服务器指纹。服务器
我是一名优秀的程序员,十分优秀!