如何阻止jQuery(html)下载内部图像和资源

时间:2011-07-02 13:14:15

标签: jquery backbone.js

我正在尝试制作jquery-mobile + phonegap应用程序,这只是某些网站的简化版本。早期的方法非常简单。只需为该站点构建一些模型和集合,并覆盖parse()以填充它们。这里有一些代码。

var Posts = Backbone.Collection.extend({ 
model: Post,
parse: function(response){
    var posts = [];
    var $response = $(response);
    var $tr = $response.find('div.board_main tr');
    $tr.each(function(index){
        if(index<2){ return; } // skip notice post
        var $post = $(this);
        var post_id = $post.find('td').eq(0).text();
        var $post_subject = $post.find('td.post_subject');
        var post_subject;
        if( $post_subject.find('a').length ){
            post_subject = $post_subject.find('a').text();
        }else{
            return;
        }
        posts.push({
            id: post_id,
            subject: post_subject 
        });
    });
    return posts;
}

});

是的我正在使用jQuery来解析HTML以制作模型,因此用$包装响应html,但那时,浏览器将下载资源,如img,脚本在该HTML中甚至我没有将它附加到正文中的某个地方。

如何取消此行为?或者我应该选择另一种方法来解析HTML?

==

编辑:在使用jQuery包装之前,我选择了使用avascript regexp进行预处理。 (删除iframe / script标签并替换img.src可以继续)我知道这很脏但现在safari不会下载资产..现在开心.. :)

function removeTag(html, tag){    
    var re = new RegExp('<'+tag + '(.+?)' + '</'+tag+'>', 'g');    
    return html.replace(re,'');
}
function removeImgSrc(html){
    return html.replace(/<img([^>]*)\ssrc=/gi,'<img$1 data-src=');    
}

1 个答案:

答案 0 :(得分:4)

查看我自己的相关问题:Parsing invalid HTML with jQuery, without adding to DOM?

使用jQuery解析HTML会导致加载像图像这样的资源,因为它实际上使用DOM来执行此操作。答案是使用另一种方法。