Microsoft Edge уведомление в расширении

Могу ли я использовать уведомления в расширении Edge?

Я конвертирую расширение Chrome в Edge, и это расширение использует уведомления, но в Edge происходит сбой. После некоторых исследований я обнаружил, что уведомления Edge отличаются от Chrome. Поэтому я создал тестовую HTML-страницу и запустил ее на локальном хосте IIS.

<!DOCTYPE html>

<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>Test Notifications</title>

</head>
<body>
<script>
        if ( "Notification" in window ) {
            let ask = Notification.requestPermission();

            ask.then( permissions => {
                if (permissions === "granted") {
                let message = new Notification ("Title", { body: "Hello Nurse", icon: "icons/icon.png" });

                }
            });
        }
</script>

    <h2>Test Notifications</h2>
    <p>Please turn on notifications</p>

</body>
</html>

Уведомления сработали! Теперь я попытался подключить это к расширению, и я не получаю окно разрешения. Вы знаете, почему это не подходит? Иногда я получаю сообщение о том, что уведомления отключены для неизвестных источников. Я нажимаю кнопку с надписью "включить в любом случае", но уведомление по-прежнему не отображается.

Заблокированы ли уведомления на всех добавочных номерах или это происходит из-за того, что я загрузил их со своего компьютера, а не из магазина? Будут ли работать уведомления при доставке в магазин?


Изменить, Дополнительная информация

Я всегда что-то забываю, когда пишу эти вопросы.

manifest.json

{
"manifest_version": 2,
"name": "__MSG_extension_name__",
"version": "XXXXX",
"description": "__MSG_extension_description__",
"author": "XXXXX",
"icons": {
    "16": "icons/icon16.png",
    "32": "icons/icon32.png",
    "48": "icons/icon48.png",
    "64": "icons/icon64.png",
    "128": "icons/icon.png"
},
"default_locale": "en_US",
"browser_action": {
    "default_icon": {
        "16": "icons/icon16.png",
        "32": "icons/icon32.png",
        "48": "icons/icon48.png",
        "64": "icons/icon64.png",
        "128": "icons/icon.png"
    },
    "default_title": "__MSG_extension_name__",
    "default_popup": "popup.html"
},
"background": {
    "page": "background.html",
    "persistent": true
}, 
"homepage_url": "http://www.xxxxx.com/",
"inprivate": "spanning",
"minimum_edge_version": "33.14281.1000.0",
"offline_enabled": true,
"permissions": [
    "<all_urls>",
    "notifications",
    "tabs",
    "webRequest",
    "webRequestBlocking",
    "webNavigation",
    "storage",
    "unlimitedStorage",
    "contextMenus"
],
"content_scripts": [
    {
        "css": [
            "css/script.css",
            "lib/jQuery-ui/jquery-ui.css"
        ],
        "js": [
            "lib/jQuery/jquery.min.js",
            "lib/jQuery-ui/jquery-ui.min.js",
            "js/script.min.js",
            "js/xxxxx.JSInterface.Types.min.js",
            "js/xxxxx.JSInterface.Utility.min.js",
            "js/xxxxx.JSInterface.API.min.js",
            "content_script.min.js"
        ],
        "matches": [
            "http://*/*",
            "https://*/*"
        ],
        "run_at": "document_end",
        "all_frames": true
    }
],
"web_accessible_resources": [
    "css/script.css",
    "icons/*.png",
    "img/*.png",
    "js/script.min.js",
    "js/xxxxx.JSInterface.Types.min.js",
    "js/xxxxx.JSInterface.Utility.min.js",
    "js/xxxxx.JSInterface.API.min.js",
    "lib/jQuery/jquery.min.js",
    "lib/jQuery-ui/jquery-ui.min.js",
    "lib/jQuery-ui/images/*.png",
    "lib/Fancytree/dist/skin-win8/ui.fancytree.css",
    "lib/Fancytree/dist/skin-win8/icons.gif",
    "lib/Fancytree/dist/skin-lion/ui.fancytree.css",
    "lib/Fancytree/dist/skin-lion/icons.gif",
    "lib/DataTables/media/images/*.png"
],
"-ms-preload": {
    "backgroundScript": "backgroundScriptsAPIBridge.js",
    "contentScript": "contentScriptsAPIBridge.js"
}
}

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

Подводя итог, у меня есть фоновая страница, которая загружает 5 файлов javaScript. Также есть всплывающий HTML-файл, который всплывает как имя пользователя и пароль. Этот файл имеет свой собственный файл javaScript, который проверяет имя пользователя и пароль и уведомляет о результатах.

1 ответ

Решение

Вы можете использовать тот же код уведомления Chrome на Edge.

var options = {
  "type": "basic",
  "title": "Test extension",
  "message": "Test",
  "iconUrl": "Logo.png",
  "requireInteraction": false
};
chrome.notifications.create("id1", options);

Я сделал это, и это работает. Мосты API, которые есть в вашем файле манифеста, позаботятся об этом.

Однако у меня возникли проблемы с отображением уведомлений. Проблема заключалась в длине атрибута "name" в манифесте. Это было слишком долго. При длине 41 символа он не отображал уведомления, несмотря на отсутствие ошибок в консоли инструментов F12. Я сократил его до 21 символа, и начали появляться уведомления. Когда я изменил имя, мне пришлось удалить расширение из Edge, а затем переустановить его. Простого обновления расширения было недостаточно.

Другие вопросы по тегам