Heim > Web-Frontend > js-Tutorial > Wie erzwinge ich eine DOM-Neuzeichnung in Chrome für Mac?

Wie erzwinge ich eine DOM-Neuzeichnung in Chrome für Mac?

Linda Hamilton
Freigeben: 2024-11-29 07:26:10
Original
369 Leute haben es durchsucht

How to Force a DOM Redraw in Chrome for Mac?

So erzwingen Sie ein DOM-Neuzeichnen in Chrome für Mac

Bei der Webentwicklung ist es manchmal notwendig, den Browser zum Neuzeichnen oder Aktualisieren zu zwingen DOM (Dokumentobjektmodell). Während es verschiedene Ansätze gibt, die in den meisten Browsern funktionieren, stellt Chrome für Mac eine einzigartige Herausforderung dar.

Die Standardtechnik, eine nicht verwendete CSS-Eigenschaft zu ändern, eine Elementdimension abzufragen und die Änderung dann rückgängig zu machen, funktioniert nicht mehr Chrome für Mac. Dieses Verhalten ist auf Optimierungen zurückzuführen, die ein Neuzeichnen verhindern, wenn die Eigenschaft offsetHeight abgerufen wird.

Um diese Einschränkung zu überwinden, kann man auf eine invasivere Methode zurückgreifen:

    $(el).css("border", "solid 1px transparent");
    setTimeout(function() {
        $(el).css("border", "solid 0px transparent");
    }, 1000);
Nach dem Login kopieren

Während diese Methode Folgendes gewährleistet: Beim Neuzeichnen kommt es auch zu einem sichtbaren Sprung in der Position des Elements, der unerwünscht sein kann. Ein subtilerer Ansatz, der ein Neuzeichnen garantiert, ist:

$('#parentOfElementToBeRedrawn').hide().show(0);
Nach dem Login kopieren

Dadurch wird das übergeordnete Element ausgeblendet und dann sofort angezeigt, wodurch ein Neuzeichnen erzwungen wird. Alternativ in einfachem JavaScript:

document.getElementById('parentOfElementToBeRedrawn').style.display = 'none';
document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
Nach dem Login kopieren

Für eine genauere Kontrolle über den Zeitpunkt des Neuzeichnens kann eine benutzerdefinierte Funktion definiert werden:

var forceRedraw = function(element){

    if (!element) { return; }

    var n = document.createTextNode(' ');
    var disp = element.style.display;  // don't worry about previous display style

    element.appendChild(n);
    element.style.display = 'none';

    setTimeout(function(){
        element.style.display = disp;
        n.parentNode.removeChild(n);
    },20); // you can play with this timeout to make it as short as possible
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erzwinge ich eine DOM-Neuzeichnung in Chrome für Mac?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage