2014-10-01 51 views
4

基本上我想要一个按钮添加到工具栏,允许用户插入©到textangular编辑器(http://textangular.com/),但我无法理解怎么加功能注册到我的按钮之后...由于textangular站点上所有自定义功能的示例都使用相同的语句“wrapSelection”,它具有非常简单的文档,下面将使用quote按钮显示此示例。如何从textAngular工具栏上的自定义按钮插入文本/符号

taRegisterTool('quote', { 
    iconclass: 'fa fa-quote-right', 
    tooltiptext: taTranslations.quote.tooltip, 
    action: function(){ 
     return this.$editor().wrapSelection("formatBlock", "<BLOCKQUOTE>"); 
    }, 
    activeState: function(){ return this.$editor().queryFormatBlockState('blockquote'); } 
}); 

我对“formatBlock”被初始化的地方感到困惑,并且认为找到它的源代码会帮助我解决这个问题。正如你所看到的任何帮助,将不胜感激

taRegisterTool('insertCopyright', { 
     buttontext: '&copy;', 
     tooltiptext: taTranslations.insertCopyright.tooltip, 
     action: function() { 
      //??? 
     }, 
    }); 
+0

我会记下wrapSelection穷docs - 它基本上是'execCommand'的包装,但我们修复了一些不一致的调用。 – 2014-10-07 21:18:19

+1

@SimeonCheeseman很酷的感谢 – alsco77 2014-10-08 08:15:35

回答

7

只是想我会后我们的解决办法答案为希望插入自定义符号之类的东西的人,很明显,我们可以移动“insertTextAtCursor”和“moveCaret”别处清理,但不管..

taRegisterTool('insertCopyright', { 
      buttontext: '&copy;', 
      tooltiptext: taTranslations.insertCopyright.tooltip, 
      action: function() { 
       function insertTextAtCursor(text) { 
        var sel, range; 
        if (window.getSelection) { 
         sel = window.getSelection(); 
         if (sel.getRangeAt && sel.rangeCount) { 
          range = sel.getRangeAt(0); 
          range.deleteContents(); 
          range.insertNode(document.createTextNode(text)); 
         } 
        } else if (document.selection && document.selection.createRange) { 
         document.selection.createRange().text = text; 
        } 
       } 

       function moveCaret(charCount) { 
        var sel, range; 
        if (window.getSelection) { 
         sel = window.getSelection(); 
         if (sel.rangeCount > 0) { 
          var textNode = sel.focusNode; 
          sel.collapse(textNode.nextSibling, charCount); 
         } 
        } else if ((sel = window.document.selection)) { 
         if (sel.type != "Control") { 
          range = sel.createRange(); 
          range.move("character", charCount); 
          range.select(); 
         } 
        } 
       } 

       insertTextAtCursor(String.fromCharCode(169)); 
       return moveCaret(1); 
      }, 
     }); 
相关问题