editor.getSelection()。getRanges()[0]在IE11

时间:2015-07-22 14:00:15

标签: ckeditor internet-explorer-11

我一直在研究这个问题几个小时,我找不到办法解决它。我正在使用ckeditor 4.3(也尝试使用4.5)和自定义颜色选择器来更改字体颜色。

所有内容都适用于chromefirefoxoperasafari但尚未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和这样的问题。

2 个答案:

答案 0 :(得分:0)

选择在不同的浏览器中表现不同,因为没有规范,平台的行为也不同。只要结果反映了选择的真实位置,一切都很好。这并不奇怪,也没什么值得担心的。唯一的问题是你需要处理所有这些不同的选择,这使得创建编辑器变得如此困难。因此,CKEditor API包含许多简化此工作的工具。

答案 1 :(得分:0)

是的,我很害怕,谢谢,做了一个不太性感的痘痘,但它起作用了

 if(element.getName() != "span") {  selectedChild = element.getChildren().getItem(0).getChildren(); }    
 else {   selectedChild = element.getChildren();  }