【发布时间】:2018-08-28 22:20:39
【问题描述】:
我正在尝试遵循以下 PWA 推送通知示例,但有一个关于服务人员的一般性问题
https://developers.google.com/web/fundamentals/codelabs/push-notifications/
在我的 Service Worker 中,我想为按钮/锚标记添加一个监听器
我的 Service Worker 初始化如下:
if ("serviceWorker" in navigator && "PushManager" in window) {
navigator.serviceWorker
.register("./scripts/my.serviceworker.js", { scope: "/" })
.then(function (swReg) {
console.log("Service Worker Registered: ", swReg);
swRegistration = swReg;
initializeUI();
});
};
并且函数initializeUI()需要包含一个点击事件的监听器,以便用户可以订阅/取消订阅
function initializeUI() {
var pushButton = document.querySelector(".pwa-pushbutton");
pushButton.addEventListener("click", function () {
console.log("Button pushed");
if (isSubscribed) {
// TODO: Unsubscribe user
} else {
subscribeUser();
}
});
但是 pushButton 变量没有定义。
如何在我的 Service Worker JS 文件中向 DOM 上的元素添加侦听器事件?
【问题讨论】:
-
嗯.. 实际上这段代码应该可以工作。据我了解,您的代码 initializeUI() 不在您的 serviceworker.js 文件中,因此应该可以访问 dom。
标签: javascript dom service-worker progressive-web-apps