Показать сообщение отдельно
  #2 (permalink)  
Старый 20.11.2018, 16:06
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

У вас страница засыпает, потому что это улучшение новых браузеров, которые могут замедлить или остановить работу в фоновых вкладках, чтобы продлить срок службы батареи или улучшить общую производительность работы браузера.

Worker не засыпает, если вам нужны возможности фонового режима, используйте фоновый режим!

пример с засыпанием (предпочтительный)
// ==UserScript==
// @name         Timeout
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the frequency!
// @author       Malleys
// @match        *://*/*
// @grant        none
// ==/UserScript==

{
    let lastTime = performance.now();

    (function loop() {
        let f = 1000 / (performance.now() - lastTime) | 0;
        lastTime = performance.now();

        document.title = `${f}Hz`;
        setTimeout(loop, 10);
    })();
}


пример без засыпания
// ==UserScript==
// @name         Timeout & Worker
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  take over the frequency! Here we go!
// @author       Malleys
// @match        *://*/*
// @grant        none
// ==/UserScript==

{
    const workerCode = `
        let lastTime = performance.now();

        (function loop() {
            let f = 1000 / (performance.now() - lastTime) | 0;
            lastTime = performance.now();

            postMessage(f);
            setTimeout(loop, 10);
        })();
    `;

    const blob = new Blob([workerCode], { type: "application/javascript" });
    const worker = new Worker(URL.createObjectURL(blob));

    worker.onmessage = ({ data }) => {
        document.title = `${data}Hz`;
    };
}
Ответить с цитированием