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 />
标签。