如何获取所选文本上返回的文本和html

时间:2014-09-01 06:58:54

标签: javascript ckeditor

所以我在我的网站上使用了一个编辑工具,并将自己的按钮和自定义样式添加到工具栏中。我有一个功能,在样式之间切换,并获得选定的文本。如何创建一个从所选文本中获取html并找到某个元素的函数,例如< p>或者< img>?

这就是我到目前为止......

init: function( editor ) {

    var config = editor.config,
        lang = editor.lang.format;

    // Gets the list of tags from the settings.
    var tags = []; //new Array();
    tags[0]=["red_font", "Red Font", "Name"];

    // Create style objects for all defined styles.

    editor.ui.addRichCombo( 'dag_wygwam',
        {
            label : "Buttons",
            title :"Buttons",
            voiceLabel : "Buttons",
            className : 'cke_format',
            multiSelect : false,

            panel :
            {
                voiceLabel : lang.panelVoiceLabel
            },

            init : function()
            {
                this.startGroup( "Buttons Functions" );
                for (var this_tag in tags){
                    this.add(tags[this_tag][0];
                }
            },

            onClick : function( value )
            {
                console.log(editor.getSelection().getSelectedText());
                editor.fire( 'saveSnapshot' );

                switch (value) {
                    case "red_font": value = red_font(editor.getSelection().getSelectedText()); break;
                }                      
               editor.insertHtml(value);
                editor.fire( 'saveSnapshot' );                        
            }
        });
}
});

function red_font(selection){
}

因此,此red_font函数必须执行以下操作:从所选文本中获取html,在所选文本中查找span类,并仅将span元素设置为红色。

1 个答案:

答案 0 :(得分:0)

var theselectedtext = null;
var theselectedelement = null;
document.onmouseup = function(e) {
e = e||event;
// to get the selected text
if (window.getSelection) {
// most browsers
theselectedtext = window.getSelection().toString();
} else {
// IE9
if (document.selection.createRange) {
theselectedtext = document.selection.createRange().text;
}
}
if (theselectedtext != null) {
// get the last clicked element
theselectedelement = e.target.tagName.toLowerCase();
}
}

在任何给定时间,这些选定的文本变量将包含所选文本,而thislectedelement变量将包含所选元素。