如何从HTML文档中仅获取文本(无标记)?

时间:2011-03-16 06:21:02

标签: javascript parsing

我有一个HTML页面,我只想要文本(所有文本节点)。

示例HTML

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

期望输出

hello sir

3 个答案:

答案 0 :(得分:25)

假设您只想要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(),则会更容易。

此外,它可以在服务器端实现,例如PHP中的strip_tags()。但是,如果您只想要body元素,则需要使用DOM解析器(例如DOMDocument)向下钻取它。

答案 1 :(得分:-2)

假设您正在尝试获取JS所在页面的html

var elems = document.getElementsByTagName('*');
var result = '';
for(var k in elems)
    result += elems[k].innerHTML || '';
alert(result);

答案 2 :(得分:-3)

我不确定我是否完全理解,但如果您想要当前页面的标记,那么我猜您可以针对当前页面发出Ajax请求并使用它:

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

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