获取未解释HTML的HTML元素的原始文本内容

时间:2013-03-14 20:09:12

标签: javascript html

我已经搜索了我的脑筋,无法弄清楚如何使这项工作。这是我正在尝试做的事情:

HTML:

<div id=derp>&quot;Hi, my name is..&quot;</div>

使用Javascript:

var div = document.getElementById('derp');
alert(div.innerHTML);
alert(div.innerText);
alert(div.textContent);

所有这些提醒都会解释并在结果字符串中将&quot;作为"返回。我希望得到&quot;未解释的原始文本。

他们都回来了:

"Hi, my name is.."

当我想要获取时:

&quot;Hi, my name is..&quot;

有办法做到这一点吗?最好不要尝试使用正则表达式将"的每个实例替换为&quot;

这是我要做的事情的一个很长的故事,但是简单地使用replace()来搜索和替换"的每个实例将是一个令人头疼的实现,因为其他正则表达式匹配/解析需要发生。

提前感谢任何可以保存我的理智的Javascript向导!

2 个答案:

答案 0 :(得分:9)

引用bobince

  

当您向浏览器询问元素节点的innerHTML时,它不会   为您提供解析后生成的HTML源代码   节点,因为它不再具有该信息。相反,它会产生   来自存储在DOM中的数据的新HTML。浏览器决定如何   格式化HTML序列化;不同浏览器产生   不同的HTML,可能与格式化的方式不同   它本来就是。

总结:innerHTML/innerText/text/textContent/nodeValue/indexOf,其中没有一个会为您提供未解析的文字。

执行此操作的唯一可能方法是使用正则表达式,或者您可以对页面本身执行ajax发布,但这是一种不好的做法。

答案 1 :(得分:2)

我几天前准备了一个带有不同方法的垃圾箱:http://jsbin.com/urazer/4/edit

我的最爱:

var text = "<a href='#' title=\"Foo\"></a>");
var html = text.replace(/[<&>'"]/g, function(c) {
  return "&#" + c.charCodeAt() + ";";
});