Tinymce - 用自定义插件替换文本内容

Tinymce - replace textcontent with custom plugin

我有一个自定义插件可以将所有文本内容中的英语数字更改为波斯语。123=>۱۲۳

tinymce.PluginManager.add('fanumber', function (editor, url) {
            var faNumber = function () {
                var ed = tinyMCE.activeEditor;
                var startNode = ed.selection.getNode();
                var walker = new tinymce.dom.TreeWalker(startNode);
                do {
                    var currnet = walker.current().textContent;
                    if (isHTML(currnet) === false) {
                        walker.current().textContent = currnet.toFaDigit();
                    }
                } while (walker.next());
            };
            editor.ui.registry.addButton('fanumber', {
                text: 'ف',
                onAction: function () {
                    faNumber();
                }
            });
            function isHTML(str) {
                var html = $("<div />").append(str).get(0);
                for (var i = 0; i < html.childNodes.length; i++) {
                    if (html.childNodes[i].nodeType === 1) {
                        return true;
                    }
                }
                return false;
            }
        });

但无法正常工作并损坏 html 代码。

我使用这种简单的方法并且工作正常:|

tinymce.PluginManager.add('fanumber', function (editor, url) {
    var faNumber = function () {
        var content = editor.getContent();
        var html = $('<div></div>').append(content);
        $(html).find('*').contents().filter(function () {
            if (this.nodeType === 3 && $.trim(this.nodeValue) !== '') {
                this.nodeValue = this.nodeValue.toFaDigit();
            }
        });
        editor.setContent($(html)[0].innerHTML);
    };
    editor.ui.registry.addButton('fanumber', {
        text: 'ف',
        onAction: function () {
            faNumber();
        }
    });
   
});