2011-07-02 5 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; 
} 

});

예 jQuery를 사용하여 HTML을 구문 분석하여 응답 HTML을 $로 감싸는 모델을 만들었지 만 그 당시에는 브라우저가 img와 같은 자산을 다운로드합니다. html의 스크립트도 본문의 어딘가에 추가하지 않았습니다. .

어떻게이 동작을 취소 할 수 있습니까? 아니면 html을 구문 분석하기위한 다른 접근 방식을 선택해야합니까?

==

편집 : 나는 jQuery를 함께 포장 전에 avascript 정규 표현식으로 전처리 선택했다. (iframe이/스크립트 태그를 제거하고 img.src 앞서 갈 확인했다 대체) 나는이 더러운 알고 있지만 지금은 사파리 행복 지금 .. 자산을 다운로드하지 않습니다 .. :)

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

난 원시 자바 스크립트 정규식으로 구문 분석 할 필요가 ... 감사합니다. :( –

관련 문제