0

我正在尝试使用 Javascript 确定是否在 CKEditor 中选择了任何内容。我希望有一个像editor.hasSelection(). 我开始使用editor.getSelection().getSelectedText() === "",但如果选择了一个没有“文本”的元素(如 img),那么它将是一个空白字符串,给我一个假阴性。我也研究了editor.getSelection().getSelectedElement(),但如果选择了多个元素,则会给出 null 。

有什么我在 API 中看不到的吗?

4

1 回答 1

1

在我看来,CKEditor 选择 API 中没有任何内容可以直接执行此操作。但是,我认为以下内容会做到这一点,尽管我同意这是一种耻辱(并且令人惊讶),没有等效于isCollapsed本机浏览器Selection对象的属性。

这是未经测试的,但看起来好像可以工作:

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) );
于 2013-01-18T23:54:31.737 回答