webRequest.StreamFilter.status
描述当前请求状态的字符串,可以取以下值之一:
"uninitialized"-
过滤器尚未完全初始化。此时不能调用任何过滤器函数。
"transferringdata"-
底层通道当前正在传输数据,且数据将在一个或多个
ondata事件中传递给扩展。此时扩展可以调用过滤器函数,例如write()、close()或disconnect()。 "finishedtransferringdata"-
底层通道已经完成了数据的传输。此时扩展仍然可以使用过滤器的
write()函数写入响应数据。 "suspended"-
当前数据传输已被暂停。此时扩展可以通过调用过滤器的
resume()函数恢复请求,并可以使用过滤器的write()函数写入响应数据。 "closed"-
扩展通过调用过滤器的
close()函数关闭了请求。过滤器将不再触发任何事件,扩展也不能再调用任何过滤器函数。 "disconnected"-
扩展通过调用过滤器的
disconnect()函数将过滤器从请求中断开。所有后续数据将直接传递而不经过过滤器。过滤器将不再触发任何事件,扩展也不能再调用任何过滤器函数。 "failed"-
发生了错误且过滤器已经从请求中断开。扩展可以在
error中找到错误消息,并且不能再调用任何过滤器函数。
浏览器兼容性
示例
js
function listener(details) {
let filter = browser.webRequest.filterResponseData(details.requestId);
console.log(filter.status); // uninitialized
filter.onstart = (event) => {
console.log(filter.status); // transferringdata
};
filter.ondata = (event) => {
console.log(filter.status); // transferringdata
// pass through the response data
filter.write(event.data);
};
filter.onstop = (event) => {
console.log(filter.status); // finishedtransferringdata
filter.disconnect();
console.log(filter.status); // disconnected
};
}
browser.webRequest.onBeforeRequest.addListener(
listener,
{ urls: ["https://example.com/*"], types: ["main_frame"] },
["blocking"],
);