获得原始的dom元素innerHTML没有javascript处理

get original dom element innerHTML without javascript processing

本文关键字:innerHTML 没有 javascript 处理 元素 dom 原始      更新时间:2023-09-26

Background -在TinyMCE支持的文章编辑器中用于大型媒体网站背后的企业内部CMS

HTML

<p>non-breaking-space: &nbsp; pound: &pound; copyright: &copy;</p>

JS

console.log($('p').html());
console.log(document.getElementsByTagName('p').item(0).innerHTML);

都返回

non-breaking-space: &nbsp; pound: £ copyright: ©

当我期待

non-breaking-space: &nbsp; pound: &pound; copyright: &copy;

有些元素的实体被颠倒了(比如pound和copyright),有些元素被保留了(不间断空格)。我需要一种方法来获得原始的内部HTML,全部保存,而不是由浏览器处理的;这可能吗?

这是一个TinyMCE插件,它使用jQuery处理输入并将其放回。内容是通过数据库加载的,插件正在处理图像标签,根本不想修改文本内容。将一些实体自动更改回原始字符不会有太大的问题,但是-

  • 我们不能修改编辑的输入,即使它是次要的
  • 由于我们网站上的一些浏览器兼容性问题,我们强制要求这些必须是实体才能保存

我会使用这个答案- https://stackoverflow.com/a/4404544/830171 -但不能作为我的HTML代码是在一个文本区域内,用户需要编辑,我需要运行jQuery DOM操作(通过插件)。

我能想到的一种方法是不使用jQuery/DOM来处理我需要改变的图像标签,而是像很多TinyMCE插件一样使用正则表达式;但是因为我在regex中被击落了,因为我试图在HTML上使用任何regex,所以我希望有一个更好的方法!

Tinymce使用一个可内容的iframe来编辑内容。这就是为什么console.log($('p').html());将记录其他内容

使用以下代码获取纯编辑器内容:

tinymce.get('your_editor_id').getBody().innerHTML