我正在尝试为我的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');
}
});
});
我在控制台中看到此错误:“未捕获的ReferenceError:窗口未定义”
如何解决这个问题?
答案 0 :(得分:13)
我正在编写代码:
// 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文件中。服务工作者无权访问window
或document
等DOM元素。一旦我将上面的代码放在与html文件关联的单独的js文件中,它就可以了。我是PWA的新手和服务工作者的概念,这似乎是一个新手的错误。如果有人帮助别人,我会发布这个答案。