我可以在Edge扩展程序中使用通知吗?
我正在将Chrome扩展程序转换为Edge,此扩展程序使用通知,但它在Edge中崩溃。经过一些研究,我发现Edge通知与chrome不同。所以我创建了一个测试html页面并在IIS localhost上运行它。
<!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文件,用于检查用户名和密码并通知结果。
答案 0 :(得分:1)
您可以在Edge上使用相同的Chrome通知代码。
var options = {
"type": "basic",
"title": "Test extension",
"message": "Test",
"iconUrl": "Logo.png",
"requireInteraction": false
};
chrome.notifications.create("id1", options);
我已经做到了,而且可行。您在清单文件上拥有的API桥会处理这些问题。
但是,我很难显示通知。问题是清单上“名称”属性的长度。太久了尽管在F12工具控制台上未显示任何错误,但它的长度为41个字符,但未显示通知。我将其缩短为21个字符,并开始显示通知。更改名称后,我必须从Edge删除扩展名,然后重新安装。仅仅刷新扩展是不够的。