Home > Web Front-end > JS Tutorial > How to Force a DOM Redraw in Chrome on macOS?

How to Force a DOM Redraw in Chrome on macOS?

Linda Hamilton
Release: 2024-12-21 09:56:15
Original
804 people have browsed it

How to Force a DOM Redraw in Chrome on macOS?

Force DOM Redraw on Chrome/Mac

This issue arises when Chrome on Mac devices incorrectly renders valid HTML/CSS elements. While inspecting the DOM often triggers a correct redraw, this hack fails on Chrome/Mac due to optimizations that prevent offsetHeight from triggering a redraw.

The following hack is a workaround:

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

This forces the element to slightly jump, which triggers a redraw. However, the delay is noticeable.

An alternative is to use this method instead:

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

// in plain js
document.getElementById('parentOfElementToBeRedrawn').style.display = 'none';
document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
Copy after login

This hides and then shows the parent element, forcing a redraw.

If this method fails, the following function guarantees a redraw by inserting an empty text node into the element:

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
}
Copy after login

This technique essentially forces a reflow, updating the layout and triggering a redraw.

The above is the detailed content of How to Force a DOM Redraw in Chrome on macOS?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template