Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Memaksa DOM Redraw dalam Chrome pada macOS?

Bagaimana untuk Memaksa DOM Redraw dalam Chrome pada macOS?

Linda Hamilton
Linda Hamiltonasal
2024-12-21 09:56:15754semak imbas

How to Force a DOM Redraw in Chrome on macOS?

Paksa DOM Redraw pada Chrome/Mac

Isu ini timbul apabila Chrome pada peranti Mac tersalah memaparkan elemen HTML/CSS yang sah. Semasa memeriksa DOM sering mencetuskan lukisan semula yang betul, penggodaman ini gagal pada Chrome/Mac disebabkan oleh pengoptimuman yang menghalang offsetHeight daripada mencetuskan lukisan semula.

Godam berikut ialah penyelesaian:

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

Ini memaksa elemen untuk melompat sedikit, yang mencetuskan lukisan semula. Walau bagaimanapun, kelewatan itu ketara.

Alternatifnya ialah menggunakan kaedah ini sebaliknya:

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

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

Ini menyembunyikan dan kemudian menunjukkan elemen induk, memaksa lukisan semula.

Jika kaedah ini gagal, fungsi berikut menjamin lukisan semula dengan memasukkan nod teks kosong ke dalam elemen:

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
}

Ini teknik pada asasnya memaksa aliran semula, mengemas kini reka letak dan mencetuskan lukisan semula.

Atas ialah kandungan terperinci Bagaimana untuk Memaksa DOM Redraw dalam Chrome pada macOS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn