【问题标题】:TinyMCE - How to add a button that wraps selected text with a tagTinyMCE - 如何添加一个用标签包裹选定文本的按钮
【发布时间】:2010-12-25 02:32:20
【问题描述】:

我目前正在使用 TinyMCE,并想添加一个自定义按钮,其工作原理如下:

  1. 用户在文本编辑器中突出显示文本
  2. 用户点击自定义按钮 X
  3. 文本(遛狗)用标签(遛狗)包裹

关于这是否可以做到的任何想法?我已经想出了如何使自定义按钮注入文本,但不换行...这是当前代码:

// Add a custom button
ed.addButton('mybutton', {
    title : 'My button',
    'class' : 'MyCoolBtn',
    image : 'MyCoolBtn.png',
    onclick : function() {
        // Add you own code to execute something on click
        ed.focus();
        ed.selection.setContent('<strong>Hello world!</strong>');
    }
});

谢谢!

【问题讨论】:

    标签: jquery tinymce


    【解决方案1】:

    实现此目的的更好方法是 (1) 执行快速检查以确保选择不为空,然后 (2) 使用 execCommand() 方法。

    使用execCommand() 表示该操作可以撤消。 @Warrior 的回答使用了setContent(),这是不可撤销的。

    ed.addButton('mybutton', {
      title: 'My button', 
      class: 'MyCoolBtn', 
      image: 'MyCoolBtn.png', 
      onclick: function() { 
        ed.focus();
        var text = ed.selection.getContent({'format': 'html'});
        if(text && text.length > 0) {
          ed.execCommand('mceInsertContent', false, '<tag>'+text+'</tag>');
        }
      }
    });
    

    【讨论】:

    • 除非它应该是mceReplaceContent。关于之后如何选择它的任何想法?
    • 如果所选内容还没有被标签包围,如何只添加标签?
    【解决方案2】:
    ed.addButton('mybutton', {
      title: 'My button', 
      class: 'MyCoolBtn', 
      image: 'MyCoolBtn.png', 
      onclick: function() { 
        // Add your own code to execute something on click 
        ed.focus();
        ed.selection.setContent('<tag>' + ed.selection.getContent() + '</tag>');
      }
    });
    

    【讨论】:

    • 一个问题@Warrior,你为什么需要ed.focus();?谢谢
    • 根据tinymce.com/wiki.php/API3:method.tinymce.Editor.focus 的 TinyMCE API 文档,此调用的目的是:“将此编辑器设置为 tinymce 集合中的 activeEditor。它还将 DOM 焦点置于编辑器内。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多