【发布时间】:2018-09-14 19:43:19
【问题描述】:
我正在尝试为我的 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
如何解决这个问题?
【问题讨论】:
-
您是否能够使用设置为“异常中断”的调试器来找出正在执行的行以及在什么上下文中?乍一看,您的注册脚本听起来像是在 ServiceWorker 上下文中执行的(
window不可用)。 -
@Dai 它停在这一行 window.addEventListener('beforeinstallprompt', function(e)。我不知道它是否相关,但在 Application 选项卡中,服务工作者没有显示文件名但显示(索引)。我正在使用 django 并将服务工作者呈现为模板。
标签: javascript django service-worker