本质上,我想在工具栏上添加一个按钮,以允许用户将©插入到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: '©',
tooltiptext: taTranslations.insertCopyright.tooltip,
action: function () {
//???
},
});
最佳答案
只是以为我会将解决方法的答案发布给希望插入自定义符号或类似内容的任何人,显然我们可以将“insertTextAtCursor”和“moveCaret”移至其他地方进行清理,无论如何。
taRegisterTool('insertCopyright', {
buttontext: '©',
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);
},
});