我正在制作一个解析某些网页的Chrome扩展程序,并且该工作正常,但我希望能够阻止图像,这意味着,不要加载它们,因为所有的解析都是在背景中制作,没有图像会更快......有没有办法这样做?
$("#data").load(url, function(responseText, textStatus, XMLHttpRequest){
$('img').attr('src','');
if(XMLHttpRequest.status==200)
parseLinks();
else if(XMLHttpRequest.status==301)
Text="Please login.";
else
Text = "Error.";
console.log(textStatus);
});
function parseLinks(){
Text = [];
$("#data .plain").each(function(i){
var tempArray;// = [];
var parent = "#"+$(this).parent().attr("id");
tempArray['text'] = $(parent+' a').text();
tempArray['link'] = $(parent+' a').attr('href');
tempArray['ad'] = $(parent+' font[color="#808080"]').text();
tempArray['value'] = $(parent+' td[width="100"] font').text();
Text[i] = tempArray;
});
if(Text.lenght)
console.log("ads loaded!");
else
Text = "No new ads.";
console.log(Text);
}
此外,您继续运行扩展程序的时间越多,扩展程序将使用的ram越多,因为它会在每个ajax请求中累积图像...
答案 0 :(得分:1)
解决了这个问题,我必须从.load()
更改为$.get()
才能在页面中插入html请求之前通过.replace()
删除图片,这里是代码:
$.get(url, function(responseText, textStatus, XMLHttpRequest){
console.log(XMLHttpRequest.status);
if(XMLHttpRequest.status==200) {
var loggedin = responseText.search('<div class=header>Account Login</div>');
if(loggedin == -1){
responseText = responseText.replace(/<img/gi, '<noload');
parseLinks(responseText);
} else {
Text="Please login.";
chrome.browserAction.setBadgeText({text:'L'});
chrome.browserAction.setBadgeBackgroundColor({color:[180,180,180,255]});
}
} else {
Text = "Error.";
chrome.browserAction.setBadgeText({text:'\u00D7'});
chrome.browserAction.setBadgeBackgroundColor({color:[255,0,0,255]});
}
});