Maison > interface Web > js tutoriel > Comment forcer un redessinage du DOM dans Chrome sur macOS ?

Comment forcer un redessinage du DOM dans Chrome sur macOS ?

Linda Hamilton
Libérer: 2024-12-21 09:56:15
original
750 Les gens l'ont consulté

How to Force a DOM Redraw in Chrome on macOS?

Forcer le redessinage du DOM sur Chrome/Mac

Ce problème survient lorsque Chrome sur les appareils Mac n'affiche pas correctement les éléments HTML/CSS valides. Bien que l'inspection du DOM déclenche souvent un redessinage correct, ce hack échoue sur Chrome/Mac en raison d'optimisations qui empêchent offsetHeight de déclencher un redessinage.

Le hack suivant est une solution de contournement :

$(el).css("border", "solid 1px transparent");
setTimeout(function() {
  $(el).css("border", "solid 0px transparent");
}, 1000);
Copier après la connexion

Cela force l'élément à sauter légèrement, ce qui déclenche un redessin. Cependant, le retard est perceptible.

Une alternative consiste à utiliser cette méthode à la place :

$('#parentOfElementToBeRedrawn').hide().show(0);

// in plain js
document.getElementById('parentOfElementToBeRedrawn').style.display = 'none';
document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
Copier après la connexion

Cela masque puis affiche l'élément parent, forçant un redessin.

Si cette méthode échoue, la fonction suivante garantit un redessin en insérant un nœud de texte vide dans l'élément :

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
}
Copier après la connexion

Cette technique force essentiellement un redistribution, mise à jour de la mise en page et déclenchement d'un redessin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal