如何从 textAngular 工具栏上的自定义按钮插入文本/符号

Posted

技术标签:

【中文标题】如何从 textAngular 工具栏上的自定义按钮插入文本/符号【英文标题】:How to insert text/symbols from a custom button on textAngular toolbar 【发布时间】:2014-11-26 12:48:11 【问题描述】:

基本上我想在工具栏上添加一个按钮,以允许用户将 © 插入 textangular 编辑器 (http://textangular.com/),但是我无法理解如何在按钮注册后向其添加功能。 . 由于 textangular 网站上的所有自定义功能示例都使用相同的语句“wrapSelection”,其文档非常少,因此下面显示了一个带有引用按钮的示例。

    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 () 
            //???
       ,
    );

【问题讨论】:

我会记录下 wrapSelection 糟糕的文档 - 它基本上是 execCommand 的包装器,但我们修复了一些不一致的调用。 @SimeonCheeseman 很酷,谢谢 【参考方案1】:

只是想我会为希望插入自定义符号或类似内容的任何人发布我们的解决方法答案,显然我们可以将“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);
            ,
        );

【讨论】:

以上是关于如何从 textAngular 工具栏上的自定义按钮插入文本/符号的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 如何从单元格内单击 UIImageView 上的自定义 UITableViewCell 获取行数据

iPhone上的自定义相机工具栏

来自图像的自定义 UIToolBar

Android 应用上的自定义事件监听器

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟

通知 ios 上的自定义音频播放器控件