TinyMCE 4中有一种方法可以在编辑时自动附加字符吗?

时间:2016-06-10 20:06:19

标签: javascript tinymce-4

这是TinyMCE 4.3.13中的一个问题,是自TinyMCE 4.1.3以来的新问题。在我们的应用程序中,我们将forced_root_block设置为false。当图像是页面上的最后一个元素时,如果您尝试删除它,则会得到:“未捕获的TypeError:无法读取属性'nodeName'为null”,除非它是页面上唯一的元素。

如果将其包装在另一个元素中,则不会出现此错误,并且图像将被删除。如果图像后面还有其他项目,即使是单个字符,也不会出现错误并删除图像。

例如,如果您打开源并将其放入:

a <img src="http://ridgeaviation.ie/images/czaw-SportsCruiser-pic01.jpg"/>
b

然后您可以从UI中删除图像。

但是有了这个:

a <img src="http://ridgeaviation.ie/images/czaw-SportsCruiser-pic01.jpg"/>

你做不到。

如果你把“”放在最后,你将无法删除,因为编辑器显然会修剪空间,但如果你把“”放在最后它不会被修剪,是不可见的,你可以删除图像。

这是html:

<!DOCTYPE html>
<html>
<head>
  <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
  <script>
tinymce.init({
    selector:'textarea',    toolbar: "fontselect fontsizeselect | bold italic underline| bullist numlist outdent indent | alignleft aligncenter alignright alignjustify | forecolor backcolor | link  anchor code",
    menubar: "edit insert view format table tools",
  plugins: [
    'advlist autolink lists link image charmap print preview hr anchor pagebreak',
    'searchreplace wordcount visualblocks visualchars code fullscreen',
    'insertdatetime media nonbreaking save table contextmenu directionality',
    'emoticons template paste textcolor colorpicker textpattern imagetools'
  ],
  image_advtab: true,
force_br_newlines: true,
force_p_newlines: false,
forced_root_block: false
  });
</script>
</head>
<body>
  <textarea>Easy (and free!) You should check out our premium features.</textarea>
</body>
</html>

所以问题是,是否有某种方法可以自动附加“”到正在编辑的文本,即使在使用Tools-&gt;源代码进行编辑之后? TinyMCE 3.x有cleanup_callback,但是在4.x中没有。

1 个答案:

答案 0 :(得分:1)

您是否可以使用TinyMCE change事件并在最后查找您的特殊字符,如果没有添加它?

例如:

tinymce.init({
    selector: 'textarea',
    ...
    setup: function (editor) {
        editor.on('change', function () {
            console.log('Content changed to:  ' + editor.getContent());
            //Check the content here and add your character to the end if needed
        });
    }
})

以下是如何使用change事件的小提琴...... http://fiddle.tinymce.com/q0faab