给orderlist添加颜色,本来tinymce是没有这个功能的,但是有一天gdev发个bugfix过来,说是需要给orderlist添加颜色,说这个事tinymce的bug,搞了半天终于搞出来了,拿来给大家共享一下,写的不好的话,不要骂我。(现在做外包难啊,明明是一个smallusecase,他硬要给你添加到bugfix里面,还只给你bugfix的价格,有理无处伸冤啊!)
第一:当点击颜色按钮的时候,同时也给orderlist添加颜色,代码如下:
var text = this.selection.getSelectedText();
var temp = text.split("\n");
if(temp.length >=1 && text.split(".").length>1)
{
text="";
for(var i=0;i<temp.length;i++)
{
if(i<(temp.length-1))
{
text=text+(temp[i].substring(temp[i].indexOf(".")+1,temp[i].length))+"#";
}
else
{
text=text+(temp[i].substring(temp[i].indexOf(".")+1,temp[i].length));
}
}
}
var str = text.split("#");
var lis = this.getDoc().getElementsByTagName("LI");
for(var i=0;i< lis.length ; i++)
{
var content = lis[i].innerHTML;
if(content.indexOf("font")>=0)
{
var font = lis[i].childNodes[0];
content = content.split(">")[1];
content = content.split("<")[0];
for(var k =0;k<str.length;k++)
{
content = content.replace(/(^\s*)|(\s*$)/g,"");
str[k].replace(/(^\s*)|(\s*$)/g,"");
if(content.replace(/(^\s*)|(\s*$)/g,"") == str[k].replace(/(^\s*)|(\s*$)/g,""))
{
lis[i].style.color = font.color;
}
}
}
}
记住,要把这个代码放到:
case"InsertOrderedList":
this.getDoc().execCommand(command, user_interface, value);
tinyMCE.triggerNodeChange();
后面。
第二:当字体颜色被更新以后,再添加orderlist,然后更新orderlist颜色:
var text = this.selection.getSelectedText();
var str = text.split("#");
var lis = this.getDoc().getElementsByTagName("LI");
for(var i=0;i< lis.length ; i++)
{
var content = lis[i].innerHTML;
if(content.indexOf("font")>=0)
{
content = content.split(">")[1];
content = content.split("<")[0];
}
else
{
content = content.split("<")[0];
}
for(var k =0;k<str.length;k++)
{
content.replace(/(^\s*)|(\s*$)/g,"");
str[k].replace(/(^\s*)|(\s*$)/g,"");
if(content.replace(/(^\s*)|(\s*$)/g,"") == str[k].replace(/(^\s*)|(\s*$)/g,""))
{
if(lis[i].innerHTML.indexOf("font")>=0 && lis[i].childNodes[0].color.toLowerCase().indexOf(value.toLowerCase())>=0)
{
lis[i].style.color = value;
}
}
}
}
记住此代码要放到:
case"forecolor":
value = value == null ? this.foreColor : value;value = tinyMCE.trim(value);
value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
this.foreColor = value;
this.getDoc().execCommand('forecolor', false, value);
的后面。