Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通知弹出窗口不';不出现在铬中_Javascript_Google Chrome_Notifications_Html5 Notifications - Fatal编程技术网

Javascript 通知弹出窗口不';不出现在铬中

Javascript 通知弹出窗口不';不出现在铬中,javascript,google-chrome,notifications,html5-notifications,Javascript,Google Chrome,Notifications,Html5 Notifications,我正在尝试做一个类似gmail的桌面通知。我面临着在chrome中更改通知权限的困难。如果我使用window.Notification.permission,则该权限在控制台中始终显示为denied。如果我手动将google chrome设置->隐私->内容设置->通知中的权限从“不允许任何站点显示桌面通知”更改为“允许所有站点显示桌面通知”。现在我可以正常获得桌面通知了。但是,如果浏览器设置为“不允许任何站点显示桌面通知”,我需要发出请求权限的警报,然后我需要从弹出窗口中选择“允许”,以便将设

我正在尝试做一个类似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放入其中。(+编辑答案以提供额外信息)