editor.getSelection().getRanges()[0] 在 IE11 中不会 return 相同的结果
editor.getSelection().getRanges()[0] don't return the same result in IE11
我已经研究这个问题几个小时了,但找不到解决方法。我正在使用 ckeditor 4.3
(也尝试 4.5)和自定义颜色选择器来更改字体颜色。
在 chrome
、firefox
、opera
和 safari
中都可以正常工作,但在 IE
中却不行。问题来自
editor.getSelection().getRanges()[0].startContainer
在chrome中给了我一个span
,这是我想要的,在IE
中给了我p
,这是一个高一级。
举个例子:
_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 等仍然是同样的问题。
选择在不同浏览器中的行为不同,因为没有规范,而且平台的行为通常也不同。只要结果反映了选择的真实位置,一切都很好。这不足为奇,也无需担心。唯一的问题是您需要处理所有这些不同的选择,这使得创建编辑器变得非常困难。因此,CKEditor API 包含许多工具来简化这项工作。
是的,我很害怕,谢谢,做了一个不太性感但有效的小修复
if(element.getName() != "span") { selectedChild = element.getChildren().getItem(0).getChildren(); }
else { selectedChild = element.getChildren(); }
我已经研究这个问题几个小时了,但找不到解决方法。我正在使用 ckeditor 4.3
(也尝试 4.5)和自定义颜色选择器来更改字体颜色。
在 chrome
、firefox
、opera
和 safari
中都可以正常工作,但在 IE
中却不行。问题来自
editor.getSelection().getRanges()[0].startContainer
在chrome中给了我一个span
,这是我想要的,在IE
中给了我p
,这是一个高一级。
举个例子:
_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 等仍然是同样的问题。
选择在不同浏览器中的行为不同,因为没有规范,而且平台的行为通常也不同。只要结果反映了选择的真实位置,一切都很好。这不足为奇,也无需担心。唯一的问题是您需要处理所有这些不同的选择,这使得创建编辑器变得非常困难。因此,CKEditor API 包含许多工具来简化这项工作。
是的,我很害怕,谢谢,做了一个不太性感但有效的小修复
if(element.getName() != "span") { selectedChild = element.getChildren().getItem(0).getChildren(); }
else { selectedChild = element.getChildren(); }