2012-09-12 46 views
0

我试图在HtmlEditor的ToolBar中插入一个按钮。按钮应该通过鼠标或键盘获取选定的文本,并在所选文本的开始处添加“#”字符以将其定位为URL。Ext-JS Html编辑器获取选定文本

据我所知,最好的解决方案是创建一个插件添加按钮到HTML编辑器工具栏。我发现了创造代码,但问题在于; 我如何获得选定的文本? EXT-js版2.2

而且有提供创建HTML编辑器工具栏按钮插件代码:

Ext.ns('Ext.ux.form.HtmlEditor'); 

    Ext.ux.form.HtmlEditor.NewLine = Ext.extend(Ext.util.Observable, { 
     init:function (cmp) { 
      this.cmp = cmp; 
      this.cmp.on('render', this.onRender, this); 
     }, 
     onRender:function() { 
      this.cmp.getToolbar().addButton([ 
       { 
        iconCls:'newline', //your iconCls here 
        handler:function() { 
         this.cmp.insertAtCursor('<br>&nbsp;'); 

        }, 
        scope:this 
       } 
      ]); 
     } 
    }); 
+0

也许[此](http://www.sencha.com/forum/showthread.php?83407-TextField-Manipulating-the-selection-and-getting-the-selected-text-in -ExtJS-2)可以帮助...你可以添加extjs版本的问题? – VDP

+0

不幸的是没有工作.. –

回答

0

你可以将选定的文本是这样的:window.getSelection()

这使你是一个Selection对象。如果你只想得到文字:window.getSelection().toString()

但是如果你想使东西粗体或什么的,你需要检查选择是否在编辑器内。您需要的一切都在选择对象内。

=>校正:htmlEditor使用iframe,您可以通过getWin函数获得iframe窗口。

请注意,这只适用于现代浏览器(而不是< IE9),从您使用的旧版Ext版本来看,这可能对您而言是个问题......但IE的解决方法。

more info

+0

window.getSelection()。toString()在那里工作!非常感谢!我的例子的确切线:var text = this.cmp.getWin()。getSelection()。toString(); –

+0

只是[找到它](http://docs.sencha.com/ext-js/2-3/source/HtmlEditor.html#Ext-form-HtmlEditor-method-getEditorBody):) getWin将工作。不知道getEditorBody是否使用getSelection方法返回对象。 getDoc可能也会起作用。 – VDP

+0

getEditor正文返回对象,getDoc也正常工作。哇,我很感谢你的伟大答案!在这里很棒!它可能会更好,如果我投票给你,但不幸的是我没有声誉:D –

相关问题