window.screenX / screenY没有在chrome上更新

时间:2018-06-10 08:00:58

标签: javascript html google-chrome window screen

我创建了这个小测试页面,它在循环中打印window.screenX和screenY,无法更新chrome上的值

  

版本67.0.3396.79(官方构建)(64位)在mac

(在Safari和FF上正常工作):

const wrapper = document.getElementById('wrapper');
const wrapperClick = document.getElementById('wrapperClick');

document.body.addEventListener('click',(e) => {
  wrapperClick.innerText = `${ window.screenX }, ${ window.screenY }, ${ window.innerWidth } × ${ window.innerHeight }`;
});

function refreshLoop() {
  window.requestAnimationFrame(() => {
    wrapper.innerText = `${ window.screenX }, ${ window.screenY }, ${ window.innerWidth } × ${ window.innerHeight }, ${ Math.random().toFixed(2) }`;
    
    refreshLoop();
  });
}

refreshLoop();
body {
  margin: 0;
  height: 100vh;
}

#wrapper,
#wrapperClick {
  position: fixed;
  top: 16px;
  left: 16px;
  font-family: monospace;
  font-size: 18px;
  line-height: 20px;
}

#wrapperClick {
  top: 52px;
}
<div id="wrapper"></div>
<div id="wrapperClick"></div>

这是一个铬虫吗?

1 个答案:

答案 0 :(得分:1)

在Mac上的Chrome 67.0.3396.62上进行测试时,值会正确更新,但只有在您停止调整大小/移动窗口时才会更新,这是当前的行为。

自2014年初以来一直存在的问题是报告并要求更改:

screenX and screenY parameters don't update until you pause dragging

  

哪些步骤会重现此问题?

     
      
  1. 启动示例应用程序(已附加)。
  2.   
  3. 拖动它。
  4.         

    请注意,screenXscreenY仅在您停止移动鼠标后才会更新。这与调整大小期间更新的innerWidthinnerHeight的行为不一致。

         

    如果screenXscreenY参数在拖动过程中更新,而不仅仅是在结尾处,则更有用的行为。