背景 - 在由TinyMCE提供支持的文章编辑器中,用于大型媒体网站背后的企业内部CMS
HTML
<p>non-breaking-space: pound: £ copyright: ©</p>
JS
console.log($('p').html());
console.log(document.getElementsByTagName('p').item(0).innerHTML);
都返回
non-breaking-space: pound: £ copyright: ©
当我期待
non-breaking-space: pound: £ copyright: ©
某些元素使其实体反转(如磅和版权),并且一些元素被保留(非破坏空间)。我需要一种方法来获取原始内部HTML,所有内容都保留,而不是由浏览器处理的内容;那可能吗?
这是一个TinyMCE插件,它使用jQuery处理输入并将其放回原处。内容是通过数据库加载的,插件处理的图像标签根本不想修改文本内容。将某些实体自动更改回原始字符不会有太多问题,但是 -
我会使用这个答案 - https://stackoverflow.com/a/4404544/830171 - 但不能因为我的HTML代码在用户需要编辑的textarea中,并且我需要运行jQuery DOM操作(通过插件)。
我能想到的一种方法是不使用jQuery / DOM来处理我需要更改的图像标签,而是像许多TinyMCE插件一样使用正则表达式;但是因为我在regex to pull all attributes out of all meta tags中因为尝试HTML的正则表达式而被击落,所以希望有更好的方法!
答案 0 :(得分:1)
Tinymce使用contenteditable iframe来编辑内容。这就是原因
console.log($('p').html());
会记录其他内容。
使用以下代码获取纯编辑器内容:
tinymce.get('your_editor_id').getBody().innerHTML