Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mengubah CSS Teks Terpilih dengan JavaScript?

Bagaimana untuk Mengubah CSS Teks Terpilih dengan JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 12:29:02690semak imbas

How to Change the CSS of Selected Text with JavaScript?

Menukar CSS Teks Terpilih dengan JavaScript

Dalam usaha untuk mencipta penanda buku yang menyerlahkan teks terpilih pada halaman web, pembangun menemui isu di mana kod jQuery yang digunakan untuk menukar CSS teks yang dipilih tidak berfungsi.

Percubaan Asal:

Kod percubaan menggunakan fungsi berikut:

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

Penyelesaian:

Isu dengan kod asal timbul daripada ketidakupayaan jQuery untuk mengubah suai secara langsung CSS teks yang dipilih. Pendekatan yang lebih berkesan ialah menggunakan kaedah execCommand(), yang menawarkan arahan untuk mengubah warna latar belakang dalam pelbagai penyemak imbas moden.

Kod berikut menunjukkan cara untuk menyerlahkan sebarang pemilihan teks:

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

Kod yang dikemas kini ini berjaya menukar warna latar belakang teks yang dipilih, tidak kira sama ada pemilihan itu merangkumi berbilang elemen.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah CSS Teks Terpilih dengan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn