#javascript #google-chrome #mouseevent #opera
#javascript #google-chrome #mouseevent #opera
Вопрос:
Я играл с рисованием на HTML canvas с использованием mousemove
событий, когда заметил, что линии, которые я рисовал, были более «пикселизированными», когда консоль разработчика была открыта. Как я и подозревал, причина в том, что при открытой консоли разработчика события мыши отбираются / запускаются с гораздо большей скоростью.
Вы можете проверить с помощью следующего фрагмента кода. На моем ноутбуке с Windows 10 с Chrome и Opera я получаю максимум около 60 событий в секунду, если я не открываю консоль разработчика (с помощью Ctrl Shift J), после чего я получаю до 1000 событий в секунду.
const header = document.querySelector('h3');
let eventsPerSec = 0;
function decreaseCounter() {
eventsPerSec--;
renderText();
}
function renderText() {
header.innerHTML = `Mouse move events in the last second: ${eventsPerSec}`
}
document.addEventListener('mousemove', event => {
eventsPerSec ;
setTimeout(decreaseCounter, 1000);
renderText();
})
renderText();
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Count Events</title>
<h3>
</h3>
</head>
Итак, мой вопрос двоякий:
- Почему Chrome и Opera ведут себя таким образом? Я бы подумал, что, как правило, плохая идея, чтобы система в режиме отладки / разработчика вела себя иначе, чем в рабочем режиме.
- Могу или должен ли я как разработчик как-то компенсировать эти различия? Для приложения для рисования различия заметны, но незначительны, поэтому я могу их игнорировать, но я мог бы представить, что есть ситуации, когда влияние больше.
PS: Результаты могут отличаться в зависимости от браузера и версии (и, возможно, ОС или чего-то еще?). Друг получал только до 128 событий в секунду с открытой консолью разработчика в Chrome и Edge. Firefox достиг максимума в 60 с консолью разработчика или без нее.