javascript - 扩展中的 Microsoft Edge 通知

标签 javascript notifications microsoft-edge-extension

我可以在 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 文件,用于检查用户名和密码并通知结果。

最佳答案

您可以在 Edge 上使用相同的 Chrome 通知代码。

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

我已经做到了并且有效。您的 list 文件中的 API 桥会负责处理它。

但是,我无法显示通知。问题在于 list 上“名称”属性的长度。时间太长了。尽管 F12 工具控制台上没有显示错误,但它的长度为 41 个字符,但没有显示通知。我将其缩短为 21 个字符,然后通知开始显示。当我更改名称时,我必须从 Edge 中删除扩展,然后重新安装。仅仅刷新扩展是不够的。

关于javascript - 扩展中的 Microsoft Edge 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41029626/

相关文章:

ios - Xamarin iOS 本地推送通知

javascript - Microsoft Edge 扩展 document.cookie 存储失败

javascript - 如何改变这三个.js 脸的颜色?

javascript - 网页抛出错误 "<function> is not defined."

javascript - 从数值创建日期时忽略时区

iphone - 如何让我的 iPhone 应用程序显示顶部横幅提醒,例如 Mail 应用程序?

javascript - GET 请求 'Accept: */*' header 导致 406。是否可以删除它?

android - 当用户按下打开 Activity 时,如何从状态栏中删除通知?

uwp - 边缘扩展 native 消息 : UWP app is closed if no response sent back to Edge browser/Extension

javascript - 微软边缘 API 错误 "browser is not defined"