日期:2014-05-16  浏览次数:20398 次

如何改写document.execCommand("BackColor",false,"red") 兼容火狐
document.execCommand("BackColor",false,"red"). 函数是给选中的文本加上背景颜色. 我是用iframe 做的编辑器,使用这个函数的时候,IE 是正常的 ,但是,在 火狐 下面,它加的是整个iframe 的背景颜色,不是选中文本的背景颜色,请问高手 怎么解决这个问题. 期待你的回答,我看别的编辑器中是这样写的,不过我没有看明白,它这里面是把选中的文字用style:background-color:red,这样就能解决问题了

下面是其它编辑器里的代码,怎么把这段改码修改一下来适合我上面哪句呢。
KE.plugin['bgcolor'] = {
click : function(id) {
KE.util.selection(id);
this.menu = new KE.menu({
id : id,
cmd : 'bgcolor'
});
this.menu.picker();
},
exec : function(id, value) {
var cmd = new KE.cmd(id);
if (value == '') {
cmd.remove({
'span' : ['.background-color']
});
} else {
cmd.wrap('span', [{'.background-color': value}]);
}
KE.history.add(id, false);
this.menu.hide();
KE.util.focus(id);
}
};

------解决方案--------------------
这个是会有问题,firefox和opera都会出现,变成整个iframe变色

方法就是:生成一段html,<font style="background:#FF0000;">aaaa</font>
然后插回原来的地方。

记录当前光标位置,然后将整段HTML插入,这个功能你要尽量实现一下,接下去不止背景色,还有很多地方都会用到。