window.screenX / screenY не обновляются в Chrome - PullRequest
0 голосов
/ 10 июня 2018

Я создал эту маленькую тестовую страницу, которая печатает 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 голосов
/ 10 июня 2018

При тестировании на Chrome 67.0.3396.62 на Mac значения обновляются корректно, но только после того, как вы перестаете изменять размер / перемещать окно, что сейчас является текущим поведением.

Существует проблема, которая быласидят без дела с начала 2014 года, сообщая об этом и запрашивая изменение:

Параметры screenX и screenY не обновляются, пока вы не приостановите перетаскивание

Какие шаги приведут к возникновению проблемы?

  1. Запустите образец приложения (прилагается).
  2. Перетащите его.

Обратите внимание, что screenX и screenY обновляются только после прекращения перемещения мыши.Это не согласуется с поведением innerWidth и innerHeight, которые обновляются при изменении размера.

Гораздо более полезное поведение будет, если параметры screenX и screenY обновляются во время перетаскивания, а не тольков конце этого.

...