Я пытаюсь сделать элементы блока на веб-странице, но я хочу сделать это, прежде чем они будут загружены. Так, например, я мог бы использоватьРасширение Chrome: заблокировать элементы страницы перед доступом
chrome.webRequest.onBeforeRequest.addListener(...);
И перенаправлять/отменить запрос. Но я хочу проверить фактическое содержание запроса. То, что я делаю прямо сейчас, начинается с XMLHttpRequest
, чтобы загрузить URL-адрес, проверить содержимое и заблокировать его, если это необходимо. Однако основная проблема заключается в том, что на самом деле не так много объектов заблокировано. Это означает, что каждый объект загружается дважды: один раз для «моей проверки» и один раз, после того, как я сказал «хорошо, вы можете загрузить его».
Как перехватить процесс загрузки, чтобы я мог осмотреть его на лету и передать байты данных, если они разрешены?
Надеюсь, вы понимаете мой вопрос, спасибо :-)
Пример того, как я сделать это прямо сейчас:
function shall_be_blocked(info){
var xhr = new XMLHttpRequest();
xhr.open("GET", file, false);
//... #load the file and inspect the bytes
if (xhr.responseText=="block it") {
return true;
}
return false;
}
chrome.webRequest.onBeforeRequest.addListener(
function(info) {
ret = shall_be_blocked(info);
if (ret ...){return {cancel:true};}//loads the file once, as it is getting blocked
return {};//loads the file twice
},
{},["blocking"]
);
Вы пробовали использовать 'ServiceWorker'? – guest271314