tinymce.PluginManager.add('charactercount', function (editor) { var _self = this; function update() { editor.theme.panel.find('#charactercount').text('Количество символов: '+ _self.getCount() + '(с пробелами) | ' + _self.getCountWithoutSpaces() + '(без пробелов)' ); } 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: 'Количество символов: '+ _self.getCount() + '(с пробелами) | ' + _self.getCountWithoutSpaces() + '(без пробелов)', classes: 'charactercount', disabled: editor.settings.readonly }, 0); editor.on('setcontent beforeaddundo keyup', update); }, 0); } }); _self.getCount = function () { var tx = editor.getContent({ format: 'raw' }); var decoded = decodeHtml(tx); var decodedStripped = decoded.replace(/(<([^>]+)>)/ig, ''); var tc = decodedStripped.length; return tc; }; _self.getCountWithoutSpaces = function () { var tx = editor.getContent({ format: 'raw' }); var decoded = decodeHtml(tx); var decodedStripped = decoded.replace(/(<([^>]+)>)/ig, ''); var tc = decodedStripped.replace(/(?:\r\n|\r|\n)/g, '').replace('/ /g', '').split(' ').join('').replace(/\s\s+/g, ''); console.log(tc); return tc.length; }; function decodeHtml(html) { var txt = document.createElement('textarea'); txt.innerHTML = html; return txt.value; } });