ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptで選択したテキストのCSSを変更するにはどうすればよいですか?

JavaScriptで選択したテキストのCSSを変更するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-17 12:29:02686ブラウズ

How to Change the CSS of Selected Text with JavaScript?

JavaScript を使用して選択したテキストの CSS を変更する

Web ページ上で選択したテキストを強調表示するブックマークレットを作成しようとしている開発者は、選択したテキストの 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。