我一直在研究这个问题几个小时,我找不到办法解决它。我正在使用ckeditor 4.3
(也尝试使用4.5)和自定义颜色选择器来更改字体颜色。
所有内容都适用于chrome
,firefox
,opera
和safari
但尚未IE
。问题来自
editor.getSelection().getRanges()[0].startContainer
给了我一个span
的chrome,这就是我想要的p
IE
,这是一个等级的高。
这里有一个例子:
_me.editor.focus();
var range = _me.editor.getSelection().getRanges()[0];
AddLinkColor(range.startContainer, value.Value);
var AddLinkColor = function (element, color)
{
var selectedChild = null;
if (element.getChildren) { selectedChild = element.getChildren(); }
if (selectedChild)
{
if (selectedChild.count)
{
for (var i = 0; i < selectedChild.count() ; i++)
{
var childElement = selectedChild.getItem(i);
if (childElement.getStyle && childElement.getStyle('color') != '' && childElement.getStyle('color') != color) childElement.setStyle('color',` color);
if (childElement.getChildCount && childElement.getChildCount() > 0) AddLinkColor(childElement, color);
if (element.$.tagName == 'A') element.setStyle('color', color);
}
}
}
};
任何其他人都面临同样的问题?
我已经尝试了startContainer
的所有变体,它给出了一个dom元素,比如commonAncestor和这样的问题。
答案 0 :(得分:0)
选择在不同的浏览器中表现不同,因为没有规范,平台的行为也不同。只要结果反映了选择的真实位置,一切都很好。这并不奇怪,也没什么值得担心的。唯一的问题是你需要处理所有这些不同的选择,这使得创建编辑器变得如此困难。因此,CKEditor API包含许多简化此工作的工具。
答案 1 :(得分:0)
是的,我很害怕,谢谢,做了一个不太性感的痘痘,但它起作用了
if(element.getName() != "span") { selectedChild = element.getChildren().getItem(0).getChildren(); }
else { selectedChild = element.getChildren(); }