Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 侦听PWA服务人员中的按钮单击_Javascript_Dom_Service Worker_Progressive Web Apps - Fatal编程技术网

Javascript 侦听PWA服务人员中的按钮单击

Javascript 侦听PWA服务人员中的按钮单击,javascript,dom,service-worker,progressive-web-apps,Javascript,Dom,Service Worker,Progressive Web Apps,我试图按照下面的PWA推送通知示例进行操作,但有一个关于服务人员的一般性问题 在我的服务人员中,我想向按钮/锚标记添加一个侦听器 我的服务人员姓名缩写如下: if ("serviceWorker" in navigator && "PushManager" in window) { navigator.serviceWorker .register("./scripts/my.serviceworker.js", { scope: "/" })

我试图按照下面的PWA推送通知示例进行操作,但有一个关于服务人员的一般性问题

在我的服务人员中,我想向按钮/锚标记添加一个侦听器

我的服务人员姓名缩写如下:

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需要包含click事件的侦听器,以便用户可以订阅/取消订阅

function initializeUI() {
    var pushButton = document.querySelector(".pwa-pushbutton");
    pushButton.addEventListener("click", function () {
        console.log("Button pushed");
        if (isSubscribed) {
            // TODO: Unsubscribe user
        } else {
            subscribeUser();
        }
    });
但是按钮变量没有定义


如何将侦听器事件添加到我的service worker JS文件中DOM上的元素?

service Workers无法侦听DOM,也无法直接与DOM交互。所有DOM活动(如单击)都需要通过postMessage发送给服务人员

应用程序: 服务人员:
服务人员不能直接聆听DOM,也不能直接与DOM交互。所有DOM活动(如单击)都需要通过postMessage发送给服务人员

应用程序: 服务人员:
隐马尔可夫模型。。实际上,这个代码应该可以工作。据我所知,您的代码初始化不在serviceworker.js文件中,因此应该可以访问dom.Hmm。。实际上,这个代码应该可以工作。据我所知,您的代码初始化不在serviceworker.js文件中,因此应该可以访问dom;另一种方法是:将事件从服务工作者发送到应用程序?再见,谢谢;另一种方法是:将事件从服务工作者发送到应用程序?看见
function onClick(event => {
  navigator.serviceWorker.controller.postMessage({
    value1: 'hello',
    value2: 'there'
  });
})
self.addEventListener('message', event => { 
  const val1 = event.data.value1,
        val2 = event.data.value2;
});