如何判断CKEditor中是否选择了任何内容

时间:2013-01-18 20:53:14

标签: ckeditor selection

我试图用Javascript确定是否在CKEditor中选择了任何内容。我希望有一个像editor.hasSelection()这样的布尔。我开始使用editor.getSelection().getSelectedText() === "",但是如果一个元素没有"文本"被选中(如img)那么这将是一个空白字符串,给我一个假阴性。我也查看了editor.getSelection().getSelectedElement(),但是如果选择了多个元素,则返回null。

我在API中没有看到这样做的任何内容吗?

1 个答案:

答案 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) );