2010-06-03 6 views
3

나는 javascript 또는 jquery를 사용하여 페이지에서 모든 HTML 태그를 제거하고이 페이지의 일반 텍스트를 제공하는 함수를 작성하는 방법을 찾으려고합니다.자바 스크립트를 사용하여 HTML없이 일반 텍스트로 웹 페이지를 가져 오는 방법은 무엇입니까?

어떻게 수행 할 수 있습니까? 어떤 아이디어?

+0

당신이 다음,''의 텍스트 내용을 반환하는 문자열을하고자 함 : IE에서 나를 위해 일한 다음 (OBJ는 jQuery를 개체입니다)? – Matchu

+1

이것은 유용하게 보입니다. http://stackoverflow.com/questions/822452/strip-html-from-text-javascript –

답변

6

IE & 웹킷

document.body.innerText 

기타 :

(므르 ElGarhy에 의해 제안)
document.body.textContent 

대부분의 JS 프레임 워크는이 작업을 수행 할 수있는 crossbrowser 방법을 구현한다. 이것은 일반적으로 다음과 같이 다소 구현됩니다

text = document.body.textContent || document.body.innerText; 

웹킷은 innerText와와 textContent 스트립 반면 모든 것을 일부 서식을 유지 것으로 보인다.

+0

인터넷 익스플로러에서만 작동합니다. – Wolph

+0

웹킷에서 잘 작동합니다. –

+0

실제로 Firefox 만 문제를 일으키는 것 같습니다. 하지만 Opera에서 여전히 innerText를 인쇄 할 때 HTML 태그를 제공합니다. – Wolph

3

보관할 형식에 따라 다릅니다.

jQuery(document.body).text(); 
0

내가 사용합니다 :

<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"></script> 
<script type="text/javascript"> 
    jQuery.fn.stripTags = function() { return this.replaceWith(this.html().replace(/<\/?[^>]+>/gi, '')); }; 
    jQuery('head').stripTags(); 

    $(document).ready(function() { 
     $("img").each(function() { 
      jQuery(this).remove(); 
     }); 
    }); 
</script> 

이 것 하지 릴리스 어떤 스타일을하지만, 모든 태그를 제거하지만 jQuery를 사용하면 이런 식으로 할 수 있습니다.

원하는 것을 원하십니까?

[편집] 지금 이미지 태그 [/ 편집]을 제거

+4

정규 표현식으로 HTML을 구문 분석하지 마십시오. – Pointy

2

는 TextContent 또는 innerText와 가진 유일한 문제는 그들 사이에 공백없이 함께 인접 노드에서 텍스트를 잼 수 있다는 것입니다을 포함하도록 편집 그들.

중요하면 몸체 나 다른 컨테이너를 저주하고 배열 에 텍스트를 반환하고 공백이나 줄 바꿈 문자를 사용할 수 있습니다.

document.deepText= function(hoo){ 
    var A= [], tem, tx; 
    if(hoo){ 
     hoo= hoo.firstChild; 
     while(hoo!= null){ 
      if(hoo.nodeType== 3){ 
       tx= hoo.data || ''; 
       if(/\S/.test(tx)) A[A.length]= tx; 
      } 
      else A= A.concat(document.deepText(hoo)); 
      hoo= hoo.nextSibling; 
     } 
    } 
    return A; 
} 
alert(document.deepText(document.body).join(' ')) 
// return document.deepText(document.body).join('\n') 
+0

다른 사람이 텍스트를 감쌀 경우를 대비해서'nodeType'을 4로 추가하는 것도 좋은 생각입니다.(이것은 jQuery가 최소한 어떻게하는지입니다.) –

1

HTML 이메일의 서식있는 텍스트를 일반 텍스트로 변환해야했습니다.

function getTextFromHTML(obj) { 
    var ni = document.createNodeIterator(obj[0], NodeFilter.SHOW_TEXT, null, false); 
    var nodeLine = ni.nextNode(); // go to first node of our NodeIterator 
    var plainText = ""; 

    while (nodeLine) { 
     plainText += nodeLine.nodeValue + "\n"; 
     nodeLine = ni.nextNode(); 
    } 

    return plainText; 
} 
관련 문제