问题标签 [progressive-web-apps]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asynchronous - 是否有 Service Worker 启动 waitUntil 来延迟处理获取?
是否可以让服务工作人员等待开始处理 fetch 事件,直到服务工作人员启动时异步工作完成?
我有一个应用程序外壳,其中包含在数据中定义的路由。要在 service worker 启动时安装特定的路由获取处理程序,我需要从 IndexedDB(异步)查找路由数据。
不幸的是,在 IndexedDB 查找完成并设置路由的获取处理之前,服务工作者开始接受获取事件。
目前,我只是为此硬编码一个特殊情况的默认处理程序,但最好让服务工作人员延迟处理获取事件,直到在服务工作人员启动时完成 IndexedDB 处理。
我没有看到为此“等待直到”的方法,也许我错过了?
offline - 打额外电话的服务人员
我正在尝试与服务人员合作进行缓存并遇到经过身份验证的调用的问题。我目前正在使用https://css-tricks.com/serviceworker-for-offline/(https://raw.githubusercontent.com/chriscoyier/Simple-Offline-Site/master/js/service-worker.js)作为模板,尽管我使用 Google 的 sw-toolbox 看到了相同的行为。
当发出一个依赖特定标头参数进行身份验证的请求时,浏览器似乎发出了一个失败的初始请求,然后是一个成功的请求(见图)。有没有想过为什么会这样?还有其他可能有用的细节吗?
在此先感谢,丹
android - 如何在我的 Chrome 网站(如 Flipkart)中获得添加到主屏幕的横幅?
我想自定义类似于 www.flipkart.com 的网站(如果在 chrome-android 上加载并单击“添加到主屏幕”)。单击此选项创建的图标时,它会显示一个启动屏幕并且不显示地址栏。我怎样才能为我的网站实现这种行为?
javascript - Service Worker 正在缓存文件,但从未触发 fetch 事件
我刚刚尝试实现服务工作者以在静态站点上缓存一些 JSON 文件和其他资产(在 localhost chrome 版本 47.0.2526.73(64 位)上运行)。使用 cache.addAll() 我已将文件添加到缓存中,当我在 chrome 中打开资源选项卡并单击缓存存储时,会列出所有文件。
我遇到的问题是我的服务工作人员在 chrome://service-worker-internals 中被列为“已激活”和“正在运行”,但是,我无法确定工作人员是否真的在拦截请求并提供缓存文件。我已经添加了事件侦听器,即使我在服务人员开发工具实例中控制台记录事件,它也永远不会到达断点:
基本上,我正在按照 HTML5 Rocks Service Workers 介绍中的描述进行操作,但我很确定我的资产不是从缓存中提供的。我已经注意到从服务工作者提供的资产在大小列中的 devtools 的网络选项卡中通过指示“来自服务工作者”来注明。
似乎我的代码与示例没有什么不同,但由于某种原因它从未遇到过 fetch 事件。我的代码要点:https ://gist.github.com/srhise/c2099b347f68b958884d
javascript - S.browser_fallback_url 是什么时候在 Chrome 中引入的?
我正在编写一个在 Chrome 上运行得更好的 Web 应用程序(JavaScript、angularJS 等),因此它会尝试在它在 Android 上运行并在默认的 Android 浏览器上打开时启动它。如果未安装 Chrome,我希望它返回 Android 浏览器(而不是 Google Play 商店)。
所以我使用这种形式的意图:intent://localhost:3011/#Intent;scheme=http;package=com.android.chrome;S.browser_fallback_url= http://localhost:3011/?intent=no ;结尾
我的问题是,当我在我的 android 平板电脑(无名,Lollipop 5.1.1,默认浏览器:Chrome 39)上运行它时,它不起作用。当我使用单独安装的 Chrome(尝试加载,例如未安装的 firefox)时,它可以工作。
因此,为了继续进行,我需要知道我是否做错了什么,或者是否有其他原因。我的问题真的归结为:browser_fallback_url 应该在旧的默认浏览器中工作,还是 Chrome 中的一个新功能(所以它对我的用例没用)。
谢谢。
javascript - 通过 HTTP 测试服务人员的选项
我想测试服务人员,但我有一个虚拟主机设置,我似乎无法在 localhost 上启用 https。
每当我尝试在本地主机上注册服务工作人员时,如何将我的本地虚拟主机 url 列入白名单以测试服务工作人员?Chrome 说启用 service worker 需要 https。至少对于本地测试,我怎样才能克服这个限制。
android - 您如何调用 Android 应用程序并从 Chrome 中的网页返回结果?
查看https://developer.chrome.com/multidevice/android/intents那么从应用程序将结果返回到 Chrome 浏览器的最佳方法是什么?有 browser_fallback_url 但是否有任何类型的 result_callback 处理程序?问题类似于如何从 Chrome 内部触发的 Intent 将结果返回到您的网页?
编辑:此https://code.google.com/p/chromium/issues/detail?id=572067的开始问题
service-worker - 如何使用网络推送通知远程关闭通知?
我正在使用基于服务工作者的新 API 在 Web 上使用推送通知,并有以下用例:
- 用户选择在多个设备/平台上接收通知
- 我们在所有设备/平台上向他们发送通知
- 用户在其中一个设备/平台上关闭通知
- 我们现在想从他们的其他设备/平台远程隐藏该通知
鉴于 Push API 的 userVisible 限制,有没有办法实现这种体验?
javascript - 适用于 Android 的 Chrome 后退按钮显示奇怪的行为,图像未加载
我已经在我的网站上实现了服务工作者,它正在为我做缓存。我在 android 设备上的 chrome 浏览器上运行我的网站。在某些情况下,当我单击 chrome 浏览器的后退按钮(我处于离线状态)时,我的页面数据会加载,但图像不会从缓存中加载。但是,如果我刷新同一页面,则图像会正确加载。知道为什么会这样吗?