Heim >Web-Frontend >CSS-Tutorial >Wie kann ich mit JavaScript auf CSS-generierte Inhalte zugreifen?

Wie kann ich mit JavaScript auf CSS-generierte Inhalte zugreifen?

Susan Sarandon
Susan SarandonOriginal
2024-11-30 16:35:15758Durchsuche

How Can I Access CSS-Generated Content Using JavaScript?

Zugriff auf CSS-generierte Inhalte mit JavaScript

Innerhalb von CSS können Zähler und Inhaltseigenschaften verwendet werden, um dynamische Inhalte wie Nummerierungsüberschriften und zu generieren Figuren. Der Zugriff auf diese generierten Inhalte in JavaScript stellt jedoch Herausforderungen dar, da die Live-Werte möglicherweise nicht ohne weiteres mit Standardmethoden zugänglich sind.

Zugriff auf Zählerwerte

Ein Ansatz ist die Verwendung die DOM Level 2 Style Counter-Schnittstelle. Allerdings weist diese Methode Einschränkungen auf, wie der Fehler zeigt, der beim Versuch auftrat, mit getCounterValue() auf den Zählerwert zuzugreifen.

Zugriff auf generierte Inhalte

Eine andere Möglichkeit besteht darin Identifizieren Sie das Pseudoelement (in diesem Fall:after) und extrahieren Sie seinen Knotenwert. Allerdings kann dieser Ansatz auch unzuverlässig sein, da es keinen Standardmechanismus für den Zugriff auf Pseudoelementinhalte über das DOM gibt.

Problemumgehungen

Als Problemumgehung: a Es kann eine skriptbasierte Lösung implementiert werden, die den Zählmechanismus des Browsers simuliert. Dazu gehört das Durchlaufen des DOM, um die Anzahl der Elemente zu zählen, die den Zähler auslösen, und das Einfügen entsprechender Werte.

window.onload = function () {
    var counters = document.querySelectorAll('.counter');
    var indices = [];
    for (var i = 0; i < counters.length; i++) {
        var counter = counters[i];
        var level = parseInt(counter.getAttribute('level'));
        while (indices.length <= level) indices.push(0);
        indices[level]++;
        indices = indices.slice(level + 1);
        var text = document.createTextNode('Figure ' + indices.join('.'));
        counter.parentNode.insertBefore(text, counter.nextSibling);

        if (counter.id !== '') {
            for (var j = 0; j < document.links.length; j++) {
                var link = document.links[j];
                if (
                    link.hostname === location.hostname &&
                    link.pathname === location.pathname &&
                    link.search === location.search &&
                    link.hash === '#' + counter.id
                ) {
                    var text = document.createTextNode('(' + indices.join('.') + ')');
                    link.parentNode.insertBefore(text, link.nextSibling);
                }
            }
        }
    }
};

Dieser Ansatz ahmt das Verhalten des Browsers nach, indem die Zählerwerte explizit aktualisiert und entsprechende Beschriftungen generiert werden. Es bietet eine tragbarere und zuverlässigere Lösung, als sich auf Live-Zählerwerte zu verlassen, insbesondere in Umgebungen, in denen solche Informationen über Standard-APIs nicht zugänglich sind.

Das obige ist der detaillierte Inhalt vonWie kann ich mit JavaScript auf CSS-generierte Inhalte zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn