不要在jQuery ajax请求中加载图像?

时间:2012-02-05 15:34:15

标签: jquery ajax image google-chrome-extension block

我正在制作一个解析某些网页的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请求中累积图像...

1 个答案:

答案 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]});
    }
});