我创建了这个小测试页面,它在循环中打印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>
这是一个铬虫吗?
答案 0 :(得分:1)
在Mac上的Chrome 67.0.3396.62
上进行测试时,值会正确更新,但只有在您停止调整大小/移动窗口时才会更新,这是当前的行为。
自2014年初以来一直存在的问题是报告并要求更改:
screenX and screenY parameters don't update until you pause dragging
哪些步骤会重现此问题?
- 启动示例应用程序(已附加)。
- 拖动它。
醇>请注意,
screenX
和screenY
仅在您停止移动鼠标后才会更新。这与调整大小期间更新的innerWidth
和innerHeight
的行为不一致。如果
screenX
和screenY
参数在拖动过程中更新,而不仅仅是在结尾处,则更有用的行为。