首頁 > web前端 > css教學 > 主體

如何使用 JavaScript 更改選定文字的 CSS?

Mary-Kate Olsen
發布: 2024-11-17 12:29:02
原創
690 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板