我正在将tinymce升级到5.x版,并遇到一些兼容性问题。尽管4.x可以正常工作,但我需要更改一些自定义按钮,而大多数情况下一切正常。如果我将文本添加到编辑器中并单击“保存”,则它可以在一组页面上使用。在另一页上,我似乎无法将当前内容输入编辑器,但是代码视图显示了代码。然后,如果我将该代码粘贴到测试站点中(重新安装tiny5)并保存到代码视图中并保存,则它会在编辑器中正常显示。
我正在使用
formJson['DESCRIPTION'] = $('iframe').contents().find('body').html();
填充div-哦,是的,我正在使用div作为选择器。在这种情况下,编辑器的行为就像是只读的,没有内容显示。
和
$('.tox-edit-area').html($('iframe').contents().find('body').html()).show();
在我的tinymceinit函数中,该函数在编辑器中显示内容,但它们是只读的-看起来如此。
控制台中也没有显示错误。
任何人都可以分享智慧的明珠吗?谢谢!
更新
// selector is passed into the function
var html = $(selector).html();//this is successful
tinymce.init({
selector: selector,
setup: function(editor) {
editor.setMode('design');
editor.setContent(html);//this does not load the code in design mode
alert(html);// this alerts the expected code
},
/// could any of this additional code below be causing an issue in tiny5?
invalid_styles: {
'*': 'font-size,font-family', // Global invalid styles
'a': 'background' // Link specific invalid styles
},
valid_styles: {
'*': 'border,font-size',
'div': 'width,height'
},
font_formats: 'Arial=arial, helvetica, sans-serif;',
toolbar: toolbtns,
plugins: 'code table lists',
//~ image_advtab: true,
menubar: false,
statusbar: false,
//~ force_p_newlines : false,
//~ force_br_newlines : true,
//~ forced_root_block : '',
width: '100%',
height: '500px',
relative_urls: false,
content_css: "/include/css/bootstrap.css",
images_dataimg_filter: function(img) {
return img.hasAttribute('internal-blob');
},
});
我在做什么错? :P
答案 0 :(得分:1)
您正在使用一个选择器来加载内容,并且将其作为TinyMCE替换的目标元素。我无法重现您的失败,但是对于您而言,setContent
是不必要的,删除此错误可能会解决问题。如果目标元素包含您的内容,则无需手动设置内容。 TinyMCE将为您做到这一点。
下面是一个示例,其中您的代码被setContent
注释掉了:
答案 1 :(得分:0)
如果您尝试将内容加载到编辑器中,我将按照编辑器的设计/ API进行以下操作之一。
<div>
编辑器之前,将内容加载到<textarea>
或init()
中。setContent()
API将数据加载到TinyMCE中。您似乎依赖于编辑器用来与编辑器进行交互的基础HTML结构,并且(正如您所看到的那样)不能保证随着时间的推移保持不变。
注意: 如果在初始化编辑器后更新基础元素(<div>
或<textarea>
),TinyMCE将不会看不到那个更新。很难说这是否是您遇到的问题的一部分,尽管内容存在于基础<div>
或<textarea>
中,但内容仍未重新加载到编辑器中。
我还会注意到TinyMCE具有只读模式配置选项:
https://www.tiny.cloud/docs/api/tinymce/tinymce.editor/#setmode
...,可用于启用或禁用其只读模式。