所以我在我的网站上使用了一个编辑工具,并将自己的按钮和自定义样式添加到工具栏中。我有一个功能,在样式之间切换,并获得选定的文本。如何创建一个从所选文本中获取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元素设置为红色。
答案 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变量将包含所选元素。