标题说明了一切.如何让TinyMCE显示字符数而不是字数?
编写自己的插件.
以下解决方案基于本文.该charactercount
插件计算用户看到的实际字符,忽略所有HTML和隐藏字符.
字符数插件:
tinymce.PluginManager.add('charactercount', function (editor) { var self = this; function update() { editor.theme.panel.find('#charactercount').text(['Characters: {0}', self.getCount()]); } editor.on('init', function () { var statusbar = editor.theme.panel && editor.theme.panel.find('#statusbar')[0]; if (statusbar) { window.setTimeout(function () { statusbar.insert({ type: 'label', name: 'charactercount', text: ['Characters: {0}', self.getCount()], classes: 'charactercount', disabled: editor.settings.readonly }, 0); editor.on('setcontent beforeaddundo', update); editor.on('keyup', function (e) { update(); }); }, 0); } }); self.getCount = function () { var tx = editor.getContent({ format: 'raw' }); var decoded = decodeHtml(tx); // here we strip all HTML tags var decodedStripped = decoded.replace(/(<([^>]+)>)/ig, "").trim(); var tc = decodedStripped.length; return tc; }; function decodeHtml(html) { var txt = document.createElement("textarea"); txt.innerHTML = html; return txt.value; } });
CSS调整:
/* Optional: Adjust the positioning of the character count text. */ label.mce-charactercount { margin: 2px 0 2px 2px; padding: 8px; } /* Optional: Remove the html path code from the status bar. */ .mce-path { display: none !important; }
TinyMCE初始化(使用jQuery)
$('textarea.tinymce').tinymce({ plugins: "charactercount", statusbar: true, init_instance_callback: function (editor) { $('.mce-tinymce').show('fast'); $(editor.getContainer()).find(".mce-path").css("display", "none"); } // ... });
PS.使用JS minifier.