javascript - 识别网页中选中的文本是否为粗体

标签 javascript format range selection bold

我正在尝试确定所选文本(在 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?
}

你能帮帮我吗?

谢谢
斯里坎特

最佳答案

如果选择在可编辑元素或文档中,这很简单:

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;
}

关于javascript - 识别网页中选中的文本是否为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404618/

相关文章:

c++ - 为什么不在带有迭代器参数的标准库函数中提供重载?

r - 将向量打印到具有预定义列数的文件,无需回收

r - 根据值 'moving window' 范围和比例对表进行分类?

sql - 连接到为每行单独创建的整数范围

javascript - float 条形图刻度线不显示

python - 将 'decimal-mark' 千位分隔符添加到数字

java - 让 OpenNLP 与 Android 一起工作的问题

javascript - 从数组中删除特定数字

JavaScript - 将多个对象存储在数组中并通过访问它们的属性

javascript - 如何在开发环境中测试更新 Service Worker?