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

标签 javascript jquery angularjs angular-ui

本质上,我想在工具栏上添加一个按钮,以允许用户将 © 插入 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 () {
            //???
       },
    });

最佳答案

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

关于javascript - 如何从 textAngular 工具栏上的自定义按钮插入文本/符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145428/

相关文章:

javascript - 如何在没有 TURN 服务器的情况下使用 WebRTC 绕过 NAT?

javascript - 使控制台脚本在 Google Chrome 中持久化

javascript - d3.js 在每个条的末尾堆叠条形图值

angularjs - angularjs 模态窗口中的模型为空

javascript - JQuery 包含时会导致冲突

javascript - 如何获取文件上传输入选择的文件列表

javascript - 如何防止jquery双击 "click"

javascript - 这个 "[]"在这里做什么?

unit-testing - 协作 Web 应用程序的端到端 UI 测试?

javascript - Angular js单元测试mock文档