События фокуса и размытия окна не работают правильно в браузере Android

Я обнаружил, что события Javascript focus и blur не срабатывают правильно в браузере Android, когда они прикреплены к окну, документу или телу.

Я написал простой тестовый скрипт, который корректно работает в браузерах для настольных ПК, но не работает в браузерах Android, Dolphin и Opera для мобильных устройств:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
    <title>Focus test</title>

    <script type="text/javascript">

        window.onfocus = function() {
            document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>';
        };
        window.onblur = function() {
            document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>';
        };

    </script>
</head>

<body>
    <input id="test" name="test" />
    <div id="console"></div>
</body>

</html>

Интересно то, что если ввод формы получает фокус, срабатывает обработчик событий , а при размытии обработчик события размытия срабатывает дважды.

Есть ли у кого-нибудь хорошее решение или обходной путь?

РЕДАКТИРОВАТЬ: Ожидаемый результат: если я изменю вкладку браузера или перейду на другое приложение, событие размытия должно сработать, и если я вернусь на вкладку браузера, событие focus должно сработать (именно так оно работает на рабочем столе)

12
задан Brian Tompsett - 汤莱恩 14 August 2019 в 09:56
поделиться