我正在尝试为django项目注册一名服务人员。这是我用于注册的代码:

<!-- register service worker -->
<script type="text/javascript">
  if('serviceWorker' in navigator) {
    window.addEventListener('load', function() {
      navigator.serviceWorker.register("{% url 'sw.js' %}").then(function(registration) {
        console.log("Service worker registered.");
        console.log("Registered at: "+registration.scope);
      });
    });
  }
</script>

这是我的service_worker.js中的代码:
// App install banner
window.addEventListener('beforeinstallprompt', function(e) {
  e.userChoice.then(function(choiceResult) {
    console.log(choiceResult.outcome);

    if(choiceResult.outcome == 'dismissed') {
      console.log('User cancelled home screen install');
    } else {
      console.log('User added to home screen');
    }
  });
});

我在控制台中看到此错误:Uncaught ReferenceError: window is not defined
如何解决这个问题?

最佳答案

我正在编写代码:

// App install banner
window.addEventListener('beforeinstallprompt', function(e) {
    e.userChoice.then(function(choiceResult){
        console.log(choiceResult.outcome);
        if(choiceResult.outcome == 'dismissed'){
            console.log('User cancelled home screen install');
        }else{
            console.log('User added to home screen');
        }
    });
});

在service_worker.js文件中。服务人员无法访问windowdocument之类的DOM元素。一旦将以上代码放入与html文件关联的单独的js文件中,它就可以工作。我是PWA和服务人员概念的新手,这似乎是一个新手错误。我会发布此答案,如果它可以帮助其他人。

关于javascript - "window is not defined"服务 worker ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49664665/

10-12 17:05
查看更多