Jquery Aloha编辑器-获取突出显示的文本并替换为html代码

Jquery Aloha编辑器-获取突出显示的文本并替换为html代码,jquery,highlight,aloha-editor,Jquery,Highlight,Aloha Editor,我正在尝试在Aloha中设置一个自定义操作,添加一个按钮,将所选文本封装到一个span类中 例如: 您选择了“示例词” 这将改变它的价值 <span>example word</span> 完整代码: var redHighlight = ""; Aloha.require(['ui/ui', 'ui/button'], function(Ui, Button) { var redButton = Ui.adopt("redButton"

我正在尝试在Aloha中设置一个自定义操作,添加一个按钮,将所选文本封装到一个span类中

例如: 您选择了“示例词”

这将改变它的价值

<span>example word</span>
完整代码:

    var redHighlight = "";
    Aloha.require(['ui/ui', 'ui/button'], function(Ui, Button) {
        var redButton = Ui.adopt("redButton", Button, {
            tooltip: 'Label',//gives inner text
            click: function(){
              var range;
              if ( Aloha.getSelection().rangeCount > 0 ) {
                  range = Aloha.getSelection().getRangeAt( 0 );
              }
              console.log(range); //returns nothing
            }
        });
    });

    Aloha.settings.toolbar = {
        tabs: [
         {
            label: 'Urgent',
            components: [ 'redButton' ],
         }
        ],
        exclude: [ 'strong', 'emphasis', 'strikethrough' ]
    };
编辑1: 我在Aloha论坛上问了这个问题,从mod上我得知在输出中重新插入html可能会导致一些DOM问题,我首先从文档中错过了范围函数与我正在开发的Google Chrome不兼容的问题

但仍对解决方案感兴趣:)


提前感谢,

您可以在额外的软件包中查看类似wai lang插件的插件。Aloha编辑器中有一个实用程序对象,可以帮助您将所选文本包装到DOM对象中

var range = Aloha.Selection.getRangeObject();
if (range.isCollapsed()) {
            GENTICS.Utils.Dom.extendToWord(range);
}
if (!range.isCollapsed()) {
    GENTICS.Utils.Dom.addMarkup(range,
        jQuery('<span class="myspecialspan"></span>'), false);
}
range.select();
var range=Aloha.Selection.getRangeObject();
if(range.isCollapsed()){
GENTICS.Utils.Dom.extendedtoword(范围);
}
如果(!range.isCollapsed()){
GENTICS.Utils.Dom.addMarkup(范围,
jQuery(“”),false);
}
range.select();
除了相应地更改选择外,它还将处理DOM拆分。例如,当您没有只选择文本,但您的选择还包含无法包装到跨距中的块元素时,跨距将被拆分:

<h1>{Heading 1</h1>
<h1>Heading 2</h1>
<h1>Heading 3}</h1>
{标题1
标题2
标题3}
其中{标记选择的开始,}标记选择的结束,将导致

<h1>{<span class="myspecialspan">Heading 1</span></h1>
<h1><span class="myspecialspan">Heading 2</span></h1>
<h1><span class="myspecialspan">Heading 3</span>}</h1>
{标题1
标题2
标题3}

很抱歉验证太晚,我们将尝试此方法并向您发送确认信息。谢谢
<h1>{<span class="myspecialspan">Heading 1</span></h1>
<h1><span class="myspecialspan">Heading 2</span></h1>
<h1><span class="myspecialspan">Heading 3</span>}</h1>