服务器在chrome扩展后台js中与服务器通信需要花费很长时间。因此,在响应值即将到来时,您必须保持安静。我应该使用哪种方法?
background.js
chrome.tabs.onUpdated.addListener(function (tabId, tab, changeInfo) {
let url = changeInfo.url;
if (url != localStorage.getItem('url')){
chrome.tabs.executeScript({
code: 'document.URL'
},function (domain) {
localStorage.setItem('url', domain);
})
}
else
var xhr = new XMLHttpRequest();
xhr.onload = function () {
if (xhr.status === 200 || xhr.status === 201) {
let a = JSON.parse(xhr.responseText);
let b = a.count;
let c = a.check;
if(c == true){
alert('베너가 ' + b + '개 검출된 사이트입니다.');
localStorage.setItem('blocked', changeInfo.url);
chrome.tabs.executeScript({
code: 'history.go(-1)'
})
}
else
alert('오류')
} else {
console.error(xhr.responseText);
}
};
xhr.open('POST', 'http://soylatte.kr:3000/image/check');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('url=' + changeInfo.url);
})