javascript - 无需javascript处理即可获取原始dom元素innerHTML

标签 javascript html tinymce html-entities

背景 - 在由 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;

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

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

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

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

我能想到的一种方法是不使用 jQuery/DOM 来处理我需要更改的图像标签,而是像许多 TinyMCE 插件那样使用正则表达式;但自从我在regex to pull all attributes out of all meta tags中被击落尝试在 HTML 上使用任何正则表达式,希望有更好的方法!

最佳答案

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

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

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

关于javascript - 无需javascript处理即可获取原始dom元素innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362816/

相关文章:

php - 无法在 codeigniter 3 中加载 css 文件

php - 从tinymce获取数据

javascript - TinyMCE 'mceImage' execCommand 返回 false

javascript - 使用 jQuery 取消选中单选按钮时出现问题

javascript - 在 jQuery 中更改 TD 元素

javascript - 如何改进此算法以仅使用三个循环?

html - 如何使用 CSS Hover 影响相邻元素

javascript - 是否可以使用blade 将参数传递给tinymce.init 函数?

javascript - 在 Firebase 中加载数据时运行 JQuery

javascript - window.onbeforeunload 并不总是触发?