Chrome 通知 - 即使网站未打开也能进行神奇推送

5
我过去曾经制作过一个Chrome扩展程序,并在该扩展程序中使用了Chrome通知API,因此我对其工作原理很熟悉。
最近我发现了这个网站,它会在某些事件发生时显示这些通知,但最奇怪的是,即使这个网站没有在任何标签页中打开,它也会推送这些通知(只要Chrome处于打开状态)。我想知道他们是怎么做到的。
我检查了我的设置->扩展列表,以查看是否不小心安装了他们的扩展程序,但没有找到。那么他们是从哪里运行这个神奇的JavaScript呢?
该网站称为https://www.greentoe.com

2
推送通知这是因为当接收到推送消息时,浏览器可以启动一个服务工作者,在没有打开页面的情况下在后台运行,并分发一个事件,以便您可以决定如何处理该推送消息。 - Andreas
1
是的,但当Worker Service在后台运行并推送这些通知时,必须有一些JavaScript实际上告诉Worker Service去推送它们。通常情况下,这是一个Chrome扩展或网站的JavaScript。但即使没有打开网站或安装扩展程序,他们也能做到。 - sublime
1
你有跟著那個連結嗎?它指向了Google開發者網站,裡面有關於推送通知的所有資訊。文件、範例程式庫、示範等等都在那裡。 - Andreas
@Andreas,您介意将其制作成一个实际的答案吗? - Xan
1
由于没有人提到它的名称,它被称为Push API。还有像这样的服务,使其轻松添加到网站/博客中。 - collimarco
1个回答

13
根据官方文档和@Andreas的说法,
引起这种情况的原因是,当接收到推送消息时,浏览器可以启动一个服务工作者,在没有打开页面的情况下在后台运行,并分派一个事件,以便您可以决定如何处理该推送消息。
您要求的JavaScript代码位于服务工作者内部。
如果您想在浏览器中查看实际使用的服务工作者,请转到chrome://inspect/#service-workers 中的新标签页。您可以通过点击工作者名称下的检查链接来查看工作者代码。

看起来URL已经更改为chrome://serviceworker-internals/,或者要检查它是否再次更改,chrome://chrome-urls/将列出所有内部Chrome URL。 - GenuinePlaceholder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接