我已经搜索了我的脑筋,无法弄清楚如何使这项工作。这是我正在尝试做的事情:
HTML:
<div id=derp>"Hi, my name is.."</div>
使用Javascript:
var div = document.getElementById('derp');
alert(div.innerHTML);
alert(div.innerText);
alert(div.textContent);
所有这些提醒都会解释并在结果字符串中将"
作为"
返回。我希望得到"
未解释的原始文本。
他们都回来了:
"Hi, my name is.."
当我想要获取时:
"Hi, my name is.."
有办法做到这一点吗?最好不要尝试使用正则表达式将"
的每个实例替换为"
。
这是我要做的事情的一个很长的故事,但是简单地使用replace()来搜索和替换"
的每个实例将是一个令人头疼的实现,因为其他正则表达式匹配/解析需要发生。
提前感谢任何可以保存我的理智的Javascript向导!
答案 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() + ";";
});