Javascript 为什么filereader.onload不';你第一次不执行吗? var k=-1 var j=-1 变量数据={} var data_h={} var finish=false chrome.webRequest.onBeforeSendHeaders.addListener( 功能(详情){ j++; console.log('BeforeSendHeaders',j) console.log(完成) if(finish==false){ //{console.log('head')) an=details.requestHeaders[1]。值 数据_h[j]=an 控制台日志(数据) } } , { 网址:[”https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"] }, [“阻塞”、“请求标头”、“外部标头”] ) chrome.webRequest.onBeforeRequest.addListener( 功能(详情) { k++; console.log('beforerequest',k) if(finish==false) { buffer=details.requestBody.raw[0]。字节 console.log(缓冲区) var blob=新blob([buffer]); //将 斑点对象 读成字符串 var reader=new FileReader(); reader.onloadend=函数(e){ setTimeout(function(){var send=reader.result;//你好! console.log(k,“次") 数据[k]=send},1); } reader.readAsText(blob,'utf-8'); } //} }, {URL:[”https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"]}, ['requestBody'] ); chrome.webRequest.onBeforeSendHeaders.addListener( 功能(详情){ 对于(var j=0;j
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 这段代码获取requestbody和请求头并将它们发送到content.js。 控制台从1开始打印“k”,但不是0。我不知道为什么第一次filereader.onload没有第一次执行。Javascript 为什么filereader.onload不';你第一次不执行吗? var k=-1 var j=-1 变量数据={} var data_h={} var finish=false chrome.webRequest.onBeforeSendHeaders.addListener( 功能(详情){ j++; console.log('BeforeSendHeaders',j) console.log(完成) if(finish==false){ //{console.log('head')) an=details.requestHeaders[1]。值 数据_h[j]=an 控制台日志(数据) } } , { 网址:[”https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"] }, [“阻塞”、“请求标头”、“外部标头”] ) chrome.webRequest.onBeforeRequest.addListener( 功能(详情) { k++; console.log('beforerequest',k) if(finish==false) { buffer=details.requestBody.raw[0]。字节 console.log(缓冲区) var blob=新blob([buffer]); //将 斑点对象 读成字符串 var reader=new FileReader(); reader.onloadend=函数(e){ setTimeout(function(){var send=reader.result;//你好! console.log(k,“次") 数据[k]=send},1); } reader.readAsText(blob,'utf-8'); } //} }, {URL:[”https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"]}, ['requestBody'] ); chrome.webRequest.onBeforeSendHeaders.addListener( 功能(详情){ 对于(var j=0;j,javascript,google-chrome-extension,Javascript,Google Chrome Extension,/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 这段代码获取requestbody和请求头并将它们发送到content.js。 控制台从1开始打印“k”,但不是0。我不知道为什么第一次filereader.onload没有第一次执行。
我试过console.log(缓冲区)可以正确打印,但是console.log(k,“次")不是。我猜这只是因为reader.onload的缘故,所以您的第二个请求在执行之前没有等待第一个请求完成?您确定只记录了一个
k
?很可能是因为在第一个请求执行时k
的异步代码已经增加了第二个一个,嫌疑犯
var k=-1
var j=-1
var data={}
var data_h={}
var finish=false
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
j++;
console.log('BeforeSendHeaders',j)
console.log(finish)
if(finish==false){
//{ console.log('head')
an=details.requestHeaders[1].value
data_h[j]=an
console.log(data_h)
}
}
, {
urls: ["https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"]
},
["blocking", "requestHeaders", "extraHeaders"]
)
chrome.webRequest.onBeforeRequest.addListener(
function(details)
{
k++;
console.log('beforerequest',k)
if(finish==false)
{
buffer=details.requestBody.raw[0].bytes
console.log(buffer)
var blob = new Blob([buffer]);
//将 Blob对象 读成字符串
var reader = new FileReader();
reader.onloadend = function (e) {
setTimeout(function(){ var send=reader.result; //a Hello world!
console.log(k,"次")
data[k]=send}, 1);
}
reader.readAsText(blob, 'utf-8');
}
//}
},
{urls: ["https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"]},
['requestBody']
);
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
for (var j = 0; j < details.requestHeaders.length; ++j) {
if (details.requestHeaders[j].name === 'Origin')
details.requestHeaders[j].value = 'https://mms.pinduoduo.com';
}
}, {
urls: ["https://mms.pinduoduo.com/sydney/api/goodsDataShow/queryGoodsSpanDateList"]
},
["blocking", "requestHeaders", "extraHeaders"]
)
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)
{
finish=request
sendResponse({head:data_h,body:data});
});