Rumah > hujung hadapan web > tutorial css > Bagaimana untuk Memaksa Muat Semula DOM dalam Chrome pada Mac?

Bagaimana untuk Memaksa Muat Semula DOM dalam Chrome pada Mac?

Barbara Streisand
Lepaskan: 2024-12-31 09:02:14
asal
950 orang telah melayarinya

How to Force a DOM Refresh in Chrome on Mac?

Paksa DOM Muat Semula pada Chrome untuk Mac

Walaupun mempunyai HTML dan CSS yang sah, Chrome pada Mac kadang-kadang gagal memaparkan elemen dengan betul atau mengabaikan pemaparan mereka sepenuhnya. Semasa memeriksa DOM melalui pemeriksa selalunya menyelesaikan isu ini, terdapat keadaan di mana Chrome sengaja mengelakkan lukisan semula.

Godam lukis semula/refresh biasa yang berfungsi untuk gabungan penyemak imbas-OS yang lain melibatkan pengubahsuaian sifat CSS yang tidak digunakan, mengambil beberapa maklumat untuk mencetuskan lukisan semula, dan kemudian mengembalikan perubahan sifat.

Walau bagaimanapun, kaedah ini gagal dalam Chrome untuk Mac. Penyelesaian yang lebih kompleks terpaksa digunakan:

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

Kaedah ini menyebabkan elemen melompat dengan jelas, yang memaksa lukisan semula. Walau bagaimanapun, mengurangkan tamat masa di bawah 500ms boleh menyebabkan penyemak imbas melukis semula sebelum elemen kembali kepada keadaan asalnya, membatalkan kesannya.

Kaedah Lukis Semula Alternatif

Satu lagi muat semula mudah kaedah yang mungkin mencukupi adalah dengan menyembunyikan dan kemudian segera tunjukkan bekas induk elemen yang diperlukan melukis semula.

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

// Plain JavaScript
document.getElementById('parentOfElementToBeRedrawn').style.display = 'none';
document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
Salin selepas log masuk

Untuk lukisan semula yang lebih teliti, nod teks kosong boleh dimasukkan dan dialih keluar daripada 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 memaksa aliran semula, seperti yang diterangkan oleh Paul Irish: http://paulirish.com/2011/dom-html5-css3-performance/

Atas ialah kandungan terperinci Bagaimana untuk Memaksa Muat Semula DOM dalam Chrome pada Mac?. 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