首页 > web前端 > css教程 > 正文

如何使用 JavaScript 更改选定文本的 CSS?

Mary-Kate Olsen
发布: 2024-11-17 12:29:02
原创
685 人浏览过

How to Change the CSS of Selected Text with JavaScript?

使用 JavaScript 更改所选文本的 CSS

在创建一个突出显示网页上所选文本的小书签时,开发人员遇到了用于更改所选文本 CSS 的 jQuery 代码不起作用的问题。

原始尝试:

尝试的代码使用以下函数:

function highlightSelText() {
    var SelText;
    if (window.getSelection) {
        SelText = window.getSelection();
    } else if (document.getSelection) {
        SelText = document.getSelection();
    } else if (document.selection) {
        SelText = document.selection.createRange().text;
    }
    $(SelText).css({'background-color' : 'yellow', 'font-weight' : 'bolder'});
}
登录后复制

解决方案:

原始代码的问题是由于 jQuery 无法直接修改所选文本的 CSS。更有效的方法是利用 execCommand() 方法,该方法提供了在各种现代浏览器中更改背景颜色的命令。

以下代码演示了如何突出显示任何文本选择:

function makeEditableAndHighlight(colour) {
    var range, sel = window.getSelection();
    if (sel.rangeCount && sel.getRangeAt) {
        range = sel.getRangeAt(0);
    }
    document.designMode = "on";
    if (range) {
        sel.removeAllRanges();
        sel.addRange(range);
    }
    if (!document.execCommand("HiliteColor", false, colour)) {
        document.execCommand("BackColor", false, colour);
    }
    document.designMode = "off";
}

function highlight(colour) {
    var range, sel;
    if (window.getSelection) {
        // IE9 and non-IE
        try {
            if (!document.execCommand("BackColor", false, colour)) {
                makeEditableAndHighlight(colour);
            }
        } catch (ex) {
            makeEditableAndHighlight(colour)
        }
    } else if (document.selection && document.selection.createRange) {
        // IE <= 8 case
        range = document.selection.createRange();
        range.execCommand("BackColor", false, colour);
    }
}
登录后复制

此更新的代码成功更改了所选文本的背景颜色,无论选择是否跨越多个元素。

以上是如何使用 JavaScript 更改选定文本的 CSS?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板