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
Lepaskan: 2024-12-21 09:56:15
asal
804 orang telah melayarinya

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);
Salin selepas log masuk

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';
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan