TinyMCE编辑器keyup事件获取文本长度报错:tinymce.get(...)为null
问题原因
tinymce.get(e)调用错误:回调里的e是键盘事件对象,并非编辑器ID或实例引用,tinymce.get()需要传入编辑器的有效标识(如ID)才能获取实例,用事件对象作为参数自然返回null,引发报错。$(body)语法错误:jQuery选择器必须加引号,这里遗漏引号会把body当作变量处理,无法正确匹配页面body元素。
解决办法
直接利用回调中已有的editor实例获取内容,无需再调用tinymce.get()查找,同时修正jQuery选择器的语法:
修正后的代码:
<script> tinymce.init({ selector: 'textarea.editor', ... toolbar: true, init_instance_callback: function(editor) { editor.on('keyUp', function(e) { // 通过当前editor实例获取纯文本内容并统计长度 var textLength = editor.getContent({ format: 'text' }).length; if( textLength === 0 ) { $('body').removeClass('active-text'); } else { $('body').addClass('active-text'); } }); }, setup: function (editor) { ... } }); </script>
注:旧版TinyMCE的editor.text()方法已被废弃,推荐使用editor.getContent({ format: 'text' })获取纯文本内容,兼容性更强。
内容的提问来源于stack exchange,提问作者Buzzztube
相关产品推荐
相关产品推荐

