Определите, выделен ли выделенный текст на веб-странице жирным шрифтом или нет - PullRequest
4 голосов
/ 04 августа 2010

Я пытаюсь определить, выделен ли выделенный текст (в Firefox) или нет?Например:

<p>Some <b>text is typed</b> here</p>

<p>Some <span style="font-weight: bold">more text is typed</span> here</p>

Пользователь может выбрать часть текста, выделенного жирным шрифтом, или текст, выделенный жирным шрифтом.Вот что я пытаюсь сделать:

function isSelectedBold(){
    var r = window.getSelection().getRangeAt(0);
    // then what?
}

Не могли бы вы мне помочь?

Спасибо
Srikanth

1 Ответ

15 голосов
/ 04 августа 2010

Если выделение находится в пределах редактируемого элемента или документа, это просто:

function selectionIsBold() {
    var isBold = false;
    if (document.queryCommandState) {
        isBold = document.queryCommandState("bold");
    }
    return isBold;
}

В противном случае это немного сложнее: в браузерах без IE вам придется временно сделать документ редактируемым:

function selectionIsBold() {
    var range, isBold = false;
    if (window.getSelection) {
        var sel = window.getSelection();
        if (sel && sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            document.designMode = "on";
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
    if (document.queryCommandState) {
        isBold = document.queryCommandState("bold");
    }
    if (document.designMode == "on") {
        document.designMode = "off";
    }
    return isBold;
}
...