ResizeObserver 在 Windows 上未按预期工作

ResizeObserver don't work as expected on Windows

我正在玩 ResizeObserver(google chrome 支持实验性网络平台标志)。我使用 jQuery UI 可调整大小创建了 codepen 演示。它在 chromium linux 上工作正常,但在 Windows 上它会在一段时间后停止或只执行一次。

我的代码如下所示:

$('#node').css({
  width: 140,
  height: 50
}).resizable();

function resizer(node, callback) {
  if (window.ResizeObserver) {
    var resizer = new ResizeObserver(function(entries) {
      callback(entries[0]);
    });
    resizer.observe(node);
    return () => resizer.unobserve(node);
  } else {
    return () => undefined;
  }
}
resizer(document.querySelector('.content'), function(entry) {
  var width = entry.contentRect.width;
  var height = entry.contentRect.height
  console.log(width + 'x' + height);
  // custom event found on
  // https://ebidel.github.io/demos/dom_resize_events.html
  entry.target.dispatchEvent(new CustomEvent('resize', {
    detail: {width,height}
  }));
});
document.querySelector('.content').addEventListener('resize', (e) => {
  console.log(e.detail);
});

我尝试重新启动浏览器,close/open开发者工具也将文件下载到本地驱动器并使用文件协议打开,得到了相同的结果。

google chrome example 工作正常,

这是一个my pen

观察者似乎得到了垃圾收集,添加

var r;
...
function resizer(node, callback) {
   ...
   var resizer = new ResizeObserver(...);
   r = resizer;
   ...
}

解决了问题