object-fit:封面;停止处理动态添加的 <img>(Safari 错误?)

object-fit: cover; stops working on dynamically added <img> (Safari bug?)

我有一个奇怪的...刚刚花了几个小时试图解决 object-fit: cover; 的 Safari 错误停止处理动态添加的 img 元素。

也许有解决方法?或者也许有人知道发生了什么事?我无法理解这个。

我已经隔离了这个小测试站点中的错误: https://safaribug.000webhostapp.com/

只需在 Safari 上按“下一页”(它会加载同一页面,但会加载新的下一页 URL)。

您可以将其用于 CSS

#bg {
  position: fixed; 
  top: 0; 
  left: 0; 

  /* Preserve aspect ratio */
  min-width: 100%;
  min-height: 100%;


或此代码

html { 
 
 background: url(images/bg.jpg) no-repeat center center fixed; 

  -webkit-background-size: cover;

  -moz-background-size: cover;

  -o-background-size: cover;

   background-size: cover;
}

}


如果其他人偶然发现了这个错误,对我有用的解决方案是:

  • 检测浏览器是否为Safari
  • 如果是,那么一旦 HTML 被放入 dom,遍历每个图像并强制它重新渲染。在我的例子中,我只是删除了 srcset 属性,然后像这样把它放回去:
    document.querySelectorAll('picture.image > img')
            .forEach($img => {
              const srcset = $img.getAttribute('srcset');
              $img.setAttribute('srcset', '');
              $img.setAttribute('srcset', srcset);
            });

这不是我想要的解决方案,但它确实有效。