我建立了一个Chrome扩展程序,该扩展程序在新标签页中打开用于html解析的网址。一切正常,但我想通过在加载页面之前剥离图像来优化加载速度。
到目前为止,我以这种方式调用该标签页:
function CreateTab(createProperties, shop_list) {
return new Promise((resolve, reject) => {
chrome.tabs.create(createProperties, tab => {
if (chrome.runtime.lastError) {
reject(new Error(chrome.runtime.lastError));
} else {
chrome.tabs.executeScript(tab.id, {
file: 'GetSource.js',
}, async function(results) {
my parsing code here
}
}
}
}
}
当调用executeScript时,已经太晚了,页面在那里。有没有一种方法可以在加载页面之前执行脚本,以便在获取html之前可以删除图像?
谢谢 洛朗(Laurent)
答案 0 :(得分:1)
您可以将 chrome.webRequest API(https://developer.chrome.com/extensions/webRequest)与 onBeforeRequest 结合使用 当即将发生请求时触发。在建立任何TCP连接之前发送此事件,该事件可用于取消或重定向请求。这样的事情应该可以防止加载.jpg图片:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return {cancel: details.url.indexOf(".jpg") != -1};
},
{urls: ["<all_urls>"]},
["blocking"]);
答案 1 :(得分:0)
也许有人仍然需要这个。
摘自Chrome文档:Chrome's Examples of webRequest Blocking
您可以使用一个侦听器阻止多种类型的图像。
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
return { cancel: true };
},
{
urls: ["*://*/*.jpg", "*://*/*.png", "*://*/*.gif", "*://*/*.ico"]
},
["blocking"]
);
您可以根据需要修改网址格式。
请不要忘记在webRequest
文件中添加webRequestBlocking
和manifest.json
权限。