2010-04-05 7 views
1

전체 웹 페이지를 요청하는 애플리케이션에서 jquery $ .get() 호출이 있습니다. 콜백 함수에서 반환 된 페이지의 div에 액세스하여 데이터를 가져 와서 내 페이지에 표시합니다.

문제는 내가 div에서 가져온 텍스트가 소스 서식을 보존하지 않는다는 것입니다. 요청한 페이지의 div가 정렬 된 목록을 말한 경우 해당 텍스트를 내 페이지에 표시하면 목록으로 표시되는 대신 인라인 항목이있는 단락으로 표시됩니다.

$ .get()이 데이터를 가져 오는 방식 또는 데이터를 표시하는 방식에 문제가 있는지 알 수 없습니다.

//get the page 
     $.get($(this).attr('href'), function(data){ 
       callbackFunc(data,myLink); 
      }, 
      "html"); 

    function callbackFunc(responseText, customData){ 

     //response has bg color of #DFDFDF 
     var td = $("td[bgcolor='#DFDFDF']", responseText); 

     //text to show is in div of that td 
     var forumText = $('div', td).text(); 

     //append new row with request data below the current row in my table 
     var currentRow = $(customData).parent('td').parent('tr'); 
     var toAppend = "<tr><td class='myTd' colspan='3'>" + forumText + "</td></tr>"; 

     $(currentRow).after(toAppend); 
} 

응답 데이터 소스 페이지 사업부는

B
C 있었을 때 내 사업부에 추가 할 새 행에 ABC처럼 보여줍니다

나는이 스크립트가 일부라는 것을 추가해야 Google 크롬의 확장 프로그램이므로 테스트 한 유일한 브라우저입니다.

답변

2

.text 대신 .html을 사용하십시오. 텍스트 :

var forumText = $('div', td).html(); 
0

서식을 유지해야하기 때문에이 스레드를 가로 질러 넘어졌습니다. 그러나 .text() 대신 .html()을 사용하는 것은 누군가가 자바 스크립트 공격을이 방법으로 주입 할 수 있기 때문에 옵션이 아닙니다. 내가 찾던 해결책이 this stackoverflow thread에 있음을 발견했습니다.

var toAppend = '<tr><td class="myTd" colspan="3" style="white-space: pre-line;">' 
+ forumText + "</td></tr>"; 
: 여전히 공백 CSS 스타일을 사용하여()는 .text 사용하는 동안

그래서 예를 들어, 공백을 보존하기 위해 코드에서 다음 줄을 변경
관련 문제