Javascript &引用;“未定义窗口”;服务人员
我正在为我的django项目注册一名服务人员。这是我用于注册的代码:Javascript &引用;“未定义窗口”;服务人员,javascript,django,service-worker,Javascript,Django,Service Worker,我正在为我的django项目注册一名服务人员。这是我用于注册的代码: <!-- register service worker --> <script type="text/javascript"> if('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register("{% url 'sw.j
<!-- 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>
我在控制台中看到此错误:未捕获引用错误:未定义窗口
如何修复此问题?我正在编写代码:
//应用程序安装横幅
window.addEventListener('beforeinstallprompt',函数(e){
e、 userChoice.then(函数(choiceResult){
控制台日志(choiceResult.Output);
如果(choiceResult.Output==‘已驳回’){
log(“用户已取消主屏幕安装”);
}否则{
log(“用户添加到主屏幕”);
}
});
});
在service_worker.js文件中。服务人员无权访问DOM元素,如
窗口
或文档
。一旦我将上述代码放在与html文件关联的单独js文件中,它就可以工作了。我不熟悉PWAs和服务人员的概念,这似乎是一个新手的错误。如果对其他人有帮助,我将发布此答案。您是否能够使用设置为“异常中断”的调试器来找出正在执行的行以及在什么上下文下执行?乍一看,您的注册脚本似乎是在ServiceWorker上下文中执行的(其中,窗口
不可用)。@Dai它在此行窗口停止。addEventListener('beforeinstallprompt',函数(e)。我不知道它是否相关,但在“应用程序”选项卡中,服务人员不显示文件名,而是显示(索引)。我正在使用django,并将服务人员作为模板呈现。@Vishal我丢失了代码。您需要任何特定部分的帮助吗?我得到了解决方案。谢谢。@Vishal您能分享您得到的解决方案吗
// 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');
}
});
});