自定义按钮替换内容

tinymce custom-button replace content

本文关键字:替换 按钮 自定义      更新时间:2023-09-26

我添加了一个自定义的" quote "按钮。

ed.addButton('blockquote', {
    title : 'blockquote',
    cmd : 'mceblockquote',
    image : url + '/img/blockquote.gif',
    onclick : function() {
        var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive();
        if (blockquoteActive) {
             //replace <blockquote> tags ?!
             //set Button inactive       
        }
        else {
            ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />');
        }
        }
});
ed.onNodeChange.add(function(ed, cm, n) {
    cm.setActive('blockquote', n.nodeName == 'IMG');
})

当我点击按钮时,一切都很好。

  • 当再次点击按钮时,我如何替换blockquote-tags ?
  • 如何设置按钮不活动?

问候,saromba

成功了,谢谢…我做了一些改变(也许/可能是改进)。

当没有选择时,不执行任何操作

当文本已经加引号

当用户用双击标记文本时,blockquote元素将被移除

onclick : function() {
                var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive();
                var selection = ed.selection.getContent();
                if (blockquoteActive) {
                   if (selection) {
                       var parElem = ed.dom.getParent(ed.selection.getNode(), 'blockquote');
                       var inner = parElem.innerHTML;
                       ed.dom.remove(parElem);
                       ed.selection.setContent(inner);
                   }
                   else return
                }
                else {
                    if (selection) {
                        ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />');
                    }
                }
            }

试试这个。你可以稍微修改一下。

ed.addButton('blockquote', {
    title : 'blockquote',
    cmd : 'mceblockquote',
    image : url + '/img/blockquote.gif',
    onclick : function() {
        var blockquoteActive = tinyMCE.activeEditor.controlManager.get('blockquote').isActive();
        if (blockquoteActive) {
             //replace <blockquote> tags ?!
             content = ed.selection.getContent();
             content.replace(/<'/?blockquote>/ig,'');
             ed.selection.setContent(content);
             //set Button inactive
             // works only if blockquote is registered at the controlManager
             ed.controlManager.setActive('blockquote', false);
        }
        else {
            ed.selection.setContent('<blockquote>' + ed.selection.getContent() + '</blockquote><br />');
        }
    }
});