我一直在测试使用此演示中的代码:
https://davidwalsh.name/demo/notifications-api.php
以上演示完美适用于Chrome,Firefox和Edge。
我用他的演示来创建一个.aspx页面。基本上查看源复制/粘贴。我只添加了一个<Form..> </Form>
,所以它可以在.aspx页面中使用。当我上传到godaddy时,它可以在Firefox和Edge中完美地工作,但在Chrome中失败了。
有人提出任何理由它不能在godaddy的Chrome中运行吗? Javascript不是我的事,但我找不到任何错误?
我的网站没有SSL保持通知不起作用吗?试图谷歌这个,但它与这个问题无关的切线。
谢谢,
稍微更新。我的.aspx页面也适用于Chrome(IIS Express)上的localhost(以及Firefox / Edge)。它只在我上传到godaddy时停止工作。它甚至从未要求允许来自godaddy的Chrome上的通知。如果我专门进入设置并添加URL以允许通知,则不起作用
-=-=-
最后一次编辑。这很难谷歌,因为推送通知和网络通知之间似乎有很多类似的关键字。我正在做网络通知,我确实发现了这个:
此外,Web通知适用于非SSL和SSL网站
这吹嘘了我的一个大理论......除非那已经过时了。
几乎是核心代码......除了我真正需要它工作的一个地方以外,它无处不在:
显示通知
<script type="text/javascript">
function showNotification() {
if(window.Notification) {
Notification.requestPermission(function(status) {
console.log('Status: ', status);
var n = new Notification('Title', { body: 'I am the body text!' });
});
}
else {
alert('Your browser doesn\'t support notifications.');
}
}
</script>
好的,经过大量测试后,它必须是SSL问题。尽管多个网站都说“网络通知” - 注意:不推送通知 - 不需要SSL,我在另一个stackoverflow问题中发现了这一点:
只有在出于安全考虑而尝试从域中的localhost,127.0.0.1或https运行时,通知api才有效。它将服务工作者文件保存在您的浏览器中,以便黑客或中间任何人可以轻易地破解该数据(如果未通过SSL加密)。因此,在实时网站中,您必须拥有SSL证书,但在本地计算机上,您可以使用任何服务器运行此证书。
演示脚本确实可以从localhost(IIS Express)运行,但不能从192.168.x.x上的IIS运行
这非常令人沮丧,因为它可以在没有SSL的Firefox和Edge中运行。
此外,谷歌这是非常困难的,因为看起来没有多少人使用网络通知。大多数搜索结果都会返回推送通知,这不是我正在使用的。