我正在尝试制作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=');
}
答案 0 :(得分:4)
查看我自己的相关问题:Parsing invalid HTML with jQuery, without adding to DOM?
使用jQuery解析HTML会导致加载像图像这样的资源,因为它实际上使用DOM来执行此操作。答案是使用另一种方法。