Erzwinge DOM-Neuzeichnen / Aktualisieren auf Chrome / Mac

Jeder einmal in eine Weile, Chrome rendert perfekt valides HTML/CSS falsch oder gar nicht. Graben durch den DOM-Inspektor ist oft genug, um es zu realisieren, die Fehler seiner Wege und ordnungsgemäß neu gezeichnet werden, so ist es nachweislich der Fall, dass das markup ist gut. Dies passiert Häufig (und vorhersagbar) genug, in einem Projekt an dem ich arbeite, habe ich code in Ort, um Kraft neu unter bestimmten Umständen.

Dies funktioniert in den meisten browser/os-Kombinationen:

    el.style.cssText += ';-webkit-transform:rotateZ(0deg)'
    el.offsetHeight
    el.style.cssText += ';-webkit-transform:none'

Als in, zwicken einige nicht verwendete CSS-Eigenschaft ist, dann Fragen Sie nach einigen Informationen, die Kräfte neu, dann untweak Eigentum. Leider, das helle-team hinter Chrome für den Mac zu haben scheinen einen Weg gefunden zu bekommen, offsetHeight, ohne nachzuziehen. So ist das töten eines ansonsten nützlichen hack.

Bisher die beste, die ich mir ausgedacht habe, um den gleichen Effekt auf Chrome/Mac ist dieses Stück Hässlichkeit:

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

Als im eigentlich Kraft, um das element zu springen ein bisschen, dann chill eine zweite und springen Sie zurück. Macht es schlimmer, wenn Sie Tropfen, der timeout unter 500ms (wo wäre es weniger Auffällig), es oft nicht den gewünschten Effekt haben, da der browser nicht, um sich zu festigen, bevor er sich wieder in seinen ursprünglichen Zustand.

Jemand Pflege zu bieten, eine bessere version von diesem neu zeichnen/aktualisieren-hack (vorzugsweise basierend auf dem ersten Beispiel oben), das funktioniert in Chrome/Mac?

InformationsquelleAutor der Frage Jason Kester | 2012-01-12

Schreibe einen Kommentar