Firefox WebExtension Popup - прерывистый фокус - PullRequest
0 голосов
/ 09 декабря 2018

Я играю с расширением Firefox, которое:

1) Отображает всплывающую страницу расширения при нажатии Ctrl+Space

2) Всплывающая страница прослушивает событие keydown,В зависимости от ключа, новый сайт загружается на новой вкладке браузера перед закрытием всплывающего окна.

Issue

Когда я нажимаю Ctrl+Space, появляется всплывающее окнокак и ожидалось.Однако иногда кажется, что всплывающее окно не в фокусе, что означает, что все события нажатия клавиш пропущены.Когда я щелкаю внутри всплывающего окна, чтобы вернуть его в фокус, события нажатия клавиш фиксируются по желанию.

Это прерывистое поведение не происходит, если я показываю всплывающее окно, нажимая кнопку расширения.

Я не уверен, является ли это проблемой Firefox или нет.Кто-нибудь сталкивался с этой проблемой до и / или знает об обходном пути?

Редактировать: При дальнейшем исследовании прерывистое поведение происходит в основном, когда я быстро нажимаю Ctrl+Space сразу после загрузки моего обработчика событий, открывает новую вкладку ссайт вроде https://www.youtube.com или https://www.bbc.com/news.Кажется, что это не происходит, когда обработчик событий загружает Google или StackOverflow.Возможно, сайты с тяжелой медиа-информацией как-то крадут фокус?

manifest.json

{
    "manifest_version": 2,
    "name": "QuickLinks",
    "version": "0.2",

    "description": "Create your own set of links for very quick access to your favorite sites.",

    "icons": {
        "48": "icons/QuickLinks48.png",
        "96": "icons/QuickLinks96.png",
        "128": "icons/QuickLinks128.png"
    },

    "permissions":
    [
        "activeTab",
        "storage"
    ],

    "browser_action": {
        "browser_style": true,
        "default_icon": "icons/QuickLinks48.png",
        "default_title": "QuickLinks",
        "default_popup": "popup/popup.html"
    },

    "options_ui": {
        "browser_style": true,
        "page": "options/options.html"
    },

    "applications": {
        "gecko": {
            "id": "58e78ac522594027d5362a36033ee5d0fdb48db1@quicklinks",
            "strict_min_version": "57.0"
        }
    },

    "commands": {
        "_execute_browser_action": {
            "suggested_key": {
                "default": "Ctrl+Space"
            }
        }
    }
}

popup.html

<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="popup.css"/>
    </head>

    <body>
        <div class="buttons">
            <table id="links"></table>
            <div class="options row">Show options</div>
        </div>

        <script src="popup.js"></script>
    </body>
</html>

popup.js

document.addEventListener("keydown", (e) => {
    console.log(`You pressed ${e.key}`)
    e.stopPropagation();
    e.preventDefault();

    browser.tabs.create({url: "https://www.youtube.com"});

    window.close();
});
...