2011-07-02 9 views
3

私はjquery-mobile + phonegapアプリケーションを作成しようとしています。これは一部のサイトを単純化したものです。初期のアプローチは致命的だった。そのサイトのいくつかのモデルとコレクションを構築し、parse()をオーバーライドするだけです。ここにいくつかのコードがあります。jQuery(html)を停止する方法内部イメージとリソースをダウンロードする

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; 
} 

});

はい私はモデルを作るためにHTMLを解析するために$を使ってレスポンスhtmlをラップしますが、その時点ではブラウザはimgのようなアセットをダウンロードします。そのHTMLのスクリプトも私は本文のどこかに追加しませんでした。

この動作をキャンセルするにはどうすればよいですか?または、htmlを解析する別の方法を選択する必要がありますか?

==

編集:私はjQueryを使ってラップする前に、avascript正規表現で前処理を選択しました。今幸せな..私はこれが汚れている知っているが、今のサファリは、アセットをダウンロードしません(IFRAME /スクリプトタグを削除し、img.srcが先に行くためにOKだった置き換える).. :)

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=');  
} 

答えて

4

を自分関連の質問を参照してください:Parsing invalid HTML with jQuery, without adding to DOM?

jQueryを使用してHTMLを解析すると、イメージなどのリソースが実際にこのアクションにDOMを使用するためロードされます。答えは別のアプローチを使用することです。

+0

私は生のjavascriptの正規表現を解析する必要があります...ありがとう.. :( –

関連する問題