JavaScript:如何从string中去除HTML标签?

可能重复:
从文本JavaScript中去除HTML

我怎样才能脱离JavaScript中的string的HTML?

使用浏览器的parsing器可能是目前浏览器中最好的select。 以下将工作,有以下警告:

  • 您的HTML在<div>元素内有效。 包含在<body><html><head>标记中的<html><div>无效,因此可能无法正确parsing。
  • textContent (DOM标准属性)和innerText (非标准)属性不相同 。 例如, textContent将在<script>元素中包含文本,而innerText不会(在大多数浏览器中)。 这只影响IE <= 8,这是唯一不支持textContent主要浏览器。
  • HTML不包含<script>元素。
  • HTML不为null
  • HTML来自可信来源。 使用这个任意的HTML允许任意的不受信任的JavaScript被执行。 这个例子来自Mike Samuel对重复问题的评论: <img onerror='alert(\"could run arbitrary JS here\")' src=bogus>

码:

 var html = "<p>Some HTML</p>"; var div = document.createElement("div"); div.innerHTML = html; var text = div.textContent || div.innerText || ""; 
 cleanText = strInputCode.replace(/<\/?[^>]+(>|$)/g, ""); 

从这个网站蒸馏(web.achive) 。

 var html = "<p>Hello, <b>World</b>"; var div = document.createElement("div"); div.innerHTML = html; alert(div.innerText); // Hello, World 

这样做的最好方法就是让浏览器执行最好的function – parsingHTML。


编辑:正如在下面的评论中指出的,这不是最跨浏览器的解决scheme。 最跨浏览器的解决scheme是recursion地遍历元素的所有子元素,并连接你find的所有文本节点。 但是,如果你使用jQuery,它已经为你做了:

 alert($("<p>Hello, <b>World</b></p>").text()); 

检查文字方法。

我知道这个问题有一个可以接受的答案,但是我觉得在任何情况下都是行不通的。

为了完整性,我花了太多的时间在这里,我们做了以下工作:我们最终使用了php.js中的一个函数(这对于那些更熟悉PHP的人来说是一个非常好的库,但是现在每做一点JavaScript然后):

http://phpjs.org/functions/strip_tags:535

它似乎是成功处理我填入我的应用程序的所有不同types的inputJavaScript代码的唯一部分。 也就是说,没有打破它 – 看到我的意见关于上面的<script />标签。