Как я могу получить только текст (без тегов) из документа HTML? - PullRequest
10 голосов
/ 16 марта 2011

У меня есть HTML-страница, и я хочу только текст (все текстовые узлы).

Пример HTML

<span>hello <strong>sir</strong></span>

Желаемый вывод

hello sir

Ответы [ 3 ]

25 голосов
/ 16 марта 2011

Предполагается, что вам нужны только дети элемента body ...

Пример HTML

<html><head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> Example</title>
</head>
<body>
  a <div>b<span>c</span></div>
</body></html>

JavaScript

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

console.log(textContent);  //   a bc

Вам нужно проверить textContent, потому что наш хороший друг IE использует innerText.

Намного проще, если у вас есть такая библиотека, как jQuery , т.е. $('body').text().

Кроме того, это может быть достигнуто на стороне сервера, например strip_tags() в PHP. Однако, если вам нужен только элемент body, вам нужно перейти к нему с использованием синтаксического анализатора DOM, например DOMDocument .

0 голосов
/ 16 марта 2011

Я не уверен, что полностью понимаю, но если вам нужна разметка для текущей страницы, то, я думаю, вы могли бы сделать запрос Ajax для текущей страницы и использовать это:

$.get("/current-page-name", function(data) {
   console.log(data);
});

http://jsfiddle.net/magicaj/CAWkx/

0 голосов
/ 16 марта 2011

Предполагается, что вы пытаетесь получить html для страницы, на которой находится ваш JS

var elems = document.getElementsByTagName('*');
var result = '';
for(var k in elems)
    result += elems[k].innerHTML || '';
alert(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...