Перезагрузить страницу в фокусе - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть Прогрессивное веб-приложение, которое мне нужно обновлять sh каждый раз, когда пользователь открывает его.

Чтобы добиться этого, я пытался:

1) First Option
window.onblur = function() {
    window.onfocus= function () {
        window.location = self.location;
    }
};

2) Second Option
var blurred = false;
window.onblur = function() { 
    blurred = true; 
};
window.onfocus = function() {
    blurred && (window.location = self.location); 
};

Кредит варианта 1 : { ссылка }

Кредит варианта 2: { ссылка }

Это работает хорошо, но проблема в том, что иногда, когда вы нажимаете что-то, это перезагружается снова. Это в основном перезагружается как 4 раза подряд с некоторым действием. В других случаях он работает как положено, просто перезагружается один раз, но в большинстве случаев это как 4 или 5 раз подряд.

Мне нужно, чтобы он перезагрузился только один раз, когда он открыт (в фокусе). Есть ли какие-либо альтернативы, которые я мог бы попробовать, или любой совет был бы оценен!

Ответы [ 2 ]

0 голосов
/ 15 февраля 2020

Вам не нужно событие onblur. Использование только события onfocus сделает всю работу.

0 голосов
/ 15 февраля 2020

Убедитесь, что вы используете window событие фокуса. Как отмечали другие, нет необходимости использовать событие blur, так как focus будет срабатывать только в том случае, если фокус окна был размытым.

Вы также можете использовать метод window.location.reload для перезагрузки окна.

window.addEventListener("focus", e => window.location.reload());
<p>Look for a flicker</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...