Javascript 通知弹出窗口不';不出现在铬中
我正在尝试做一个类似gmail的桌面通知。我面临着在chrome中更改通知权限的困难。如果我使用window.Notification.permission,则该权限在控制台中始终显示为denied。如果我手动将google chrome设置->隐私->内容设置->通知中的权限从“不允许任何站点显示桌面通知”更改为“允许所有站点显示桌面通知”。现在我可以正常获得桌面通知了。但是,如果浏览器设置为“不允许任何站点显示桌面通知”,我需要发出请求权限的警报,然后我需要从弹出窗口中选择“允许”,以便将设置更改为“允许所有站点显示桌面通知”。问题是,如果我这样做,即使权限警报不会出现,权限也不会更改。下面是权限检查脚本Javascript 通知弹出窗口不';不出现在铬中,javascript,google-chrome,notifications,html5-notifications,Javascript,Google Chrome,Notifications,Html5 Notifications,我正在尝试做一个类似gmail的桌面通知。我面临着在chrome中更改通知权限的困难。如果我使用window.Notification.permission,则该权限在控制台中始终显示为denied。如果我手动将google chrome设置->隐私->内容设置->通知中的权限从“不允许任何站点显示桌面通知”更改为“允许所有站点显示桌面通知”。现在我可以正常获得桌面通知了。但是,如果浏览器设置为“不允许任何站点显示桌面通知”,我需要发出请求权限的警报,然后我需要从弹出窗口中选择“允许”,以便将设
if(Notification.permission == 'denied'){
Notification.requestPermission(function (status){
console.log("Reaching here");
Notification.permission = status;
});
}
未出现请求允许或不允许通知的权限的弹出窗口。提前感谢您为我提供解决方案。您的脚本似乎有问题 这是标准的一部分,当
权限
设置为拒绝
时,您永远不能显示询问“是否允许…发送桌面通知?”的弹出窗口。此弹出窗口仅在权限
设置为默认值
的情况下使用,这实际上意味着用户不在乎,您应该询问他是否需要这些权限
这是我使用的条件:
Notification['permission'] !== 'granted' && Notification['permission'] !== 'denied'
因为并非所有浏览器都支持默认值。另外,Chrome32之前没有实现权限
属性,这就是为什么您应该使用方括号访问它
事实上,您还可以删除my Conditional中的
denied
部分,因为如果权限被拒绝,它将不会做任何事情。您可以参考以获取有关兼容性等方面的更多信息。您的脚本似乎有问题
这是标准的一部分,当权限
设置为拒绝
时,您永远不能显示询问“是否允许…发送桌面通知?”的弹出窗口。此弹出窗口仅在权限
设置为默认值
的情况下使用,这实际上意味着用户不在乎,您应该询问他是否需要这些权限
这是我使用的条件:
Notification['permission'] !== 'granted' && Notification['permission'] !== 'denied'
因为并非所有浏览器都支持默认值。另外,Chrome32之前没有实现权限
属性,这就是为什么您应该使用方括号访问它
事实上,您还可以删除my Conditional中的
denied
部分,因为如果权限被拒绝,它将不会做任何事情。您可以参考以获取有关兼容性等方面的更多信息。不打开对话框的问题是http。Chrome桌面通知仅适用于https协议
我曾经面对过这个问题,我花了很多时间来解决这个问题。最后我得到了使用https的解决方案
在这里,我共享了代码,这样您就可以在https上运行了,它会工作得很好
enter code here
// request permission on page load
document.addEventListener('DOMContentLoaded', function () {
if (!Notification) {
alert('Desktop notifications not available in your browser. Try Chromium.');
return;
}
if (Notification.permission !== "granted")
Notification.requestPermission();
});
function notifyMe() {
if (Notification.permission !== "granted")
Notification.requestPermission();
else {
var notification = new Notification('Notification title', {
icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
body: "Hey there! You've been notified!",
});
notification.onclick = function () {
window.open("http://stackoverflow.com/a/13328397/1269037");
};
}
}
notifyMe();
Call notifyMe(); to show notification
不打开对话框的问题是http。Chrome桌面通知仅适用于https协议 我曾经面对过这个问题,我花了很多时间来解决这个问题。最后我得到了使用https的解决方案 在这里,我共享了代码,这样您就可以在https上运行了,它会工作得很好
enter code here
// request permission on page load
document.addEventListener('DOMContentLoaded', function () {
if (!Notification) {
alert('Desktop notifications not available in your browser. Try Chromium.');
return;
}
if (Notification.permission !== "granted")
Notification.requestPermission();
});
function notifyMe() {
if (Notification.permission !== "granted")
Notification.requestPermission();
else {
var notification = new Notification('Notification title', {
icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
body: "Hey there! You've been notified!",
});
notification.onclick = function () {
window.open("http://stackoverflow.com/a/13328397/1269037");
};
}
}
notifyMe();
Call notifyMe(); to show notification
是的@Depado,你是对的。我以后再弄明白。谢谢你的回复,不客气。事实上,我希望通知API在成为标准后能得到更多的关注。另外,我希望他们能够恢复这样一个事实,即我们可以将html放入其中。(+编辑答案以提供额外信息)是@Depado,你是对的。我以后再弄明白。谢谢你的回复,不客气。事实上,我希望通知API在成为标准后能得到更多的关注。另外,我希望他们能够恢复这样一个事实,即我们可以将html放入其中。(+编辑答案以提供额外信息)