我试图用Javascript确定是否在CKEditor中选择了任何内容。我希望有一个像editor.hasSelection()
这样的布尔。我开始使用editor.getSelection().getSelectedText() === ""
,但是如果一个元素没有"文本"被选中(如img)那么这将是一个空白字符串,给我一个假阴性。我也查看了editor.getSelection().getSelectedElement()
,但是如果选择了多个元素,则返回null。
我在API中没有看到这样做的任何内容吗?
答案 0 :(得分:1)
在我看来,好像CKEditor选择API中没有任何内容可以直接执行此操作。但是,我认为以下内容会做到这一点,虽然我同意这是一个耻辱(并且令人惊讶),但是没有相当于本机浏览器Selection
对象的isCollapsed
属性。
这是未经测试的,但看起来好像可行:
function hasSelection(editor) {
var sel = editor.getSelection();
var ranges = sel.getRanges();
for (var i = 0, len = ranges.length; i < len; ++i) {
if (!ranges[i].collapsed) {
return true;
}
}
return false;
}
// Example:
alert( hasSelection(editor) );