首页 > web前端 > css教程 > 如何在 Mac 上的 Chrome 中强制刷新 DOM?

如何在 Mac 上的 Chrome 中强制刷新 DOM?

Barbara Streisand
发布: 2024-12-31 09:02:14
原创
950 人浏览过

How to Force a DOM Refresh in Chrome on Mac?

在 Mac 版 Chrome 上强制 DOM 刷新

尽管具有有效的 HTML 和 CSS,Mac 上的 Chrome 偶尔仍无法正确渲染元素或忽略渲染完全是他们。虽然通过检查器检查 DOM 通常可以解决问题,但在某些情况下,Chrome 会故意避免重绘。

适用于其他浏览器操作系统组合的常见重绘/刷新技巧涉及修改未使用的 CSS 属性,获取一些触发重绘的信息,然后恢复属性更改。

但是,此方法在 Chrome for Mac 中失败。必须采用更复杂的解决方案:

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

此方法会导致元素明显跳跃,从而强制重绘。但是,将超时减少到 500 毫秒以下可能会导致浏览器在元素恢复到原始状态之前重新绘制,从而使效果无效。

替代重绘方法

另一种简单刷新可能就足够的方法是隐藏然后立即显示需要的元素的父容器重绘。

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

// Plain JavaScript
document.getElementById('parentOfElementToBeRedrawn').style.display = 'none';
document.getElementById('parentOfElementToBeRedrawn').style.display = 'block';
登录后复制

为了更彻底的重绘,可以在元素中插入和删除空文本节点:

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
}
登录后复制

这会强制进行重排,如 Paul Irish 所描述的: http://paulirish.com/2011/dom-html5-css3-performance/

以上是如何在 Mac 上的 Chrome 中强制刷新 DOM?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板