gpt4 book ai didi

javascript - 如何仅在 PWA 而不是在网站中显示更新弹出窗口?

转载 作者:行者123 更新时间:2023-11-30 10:59:18 24 4
gpt4 key购买 nike

我有一个从头开始创建的 Laravel PWA。我正在使用 Laravel 的 Silviolleite PWA 插件。

我已经创建了一个服务 worker 。这是代码

> var staticCacheName = "pwa-v" + new Date().getTime(); var filesToCache
> = [
> '/offline.html',
> '/css/style.css',
> '/js/app.js', ];
>
> // Cache on install self.addEventListener("install", event => {
> this.skipWaiting();
> event.waitUntil(
> caches.open(staticCacheName)
> .then(cache => {
> return cache.addAll(filesToCache);
> })
> ) });
>
> // Clear cache on activate self.addEventListener('activate', event =>
> {
> event.waitUntil(
> caches.keys().then(cacheNames => {
> return Promise.all(
> cacheNames
> .filter(cacheName => (cacheName.startsWith("pwa-")))
> .filter(cacheName => (cacheName !== staticCacheName))
> .map(cacheName => caches.delete(cacheName))
> );
> })
> ); });
>
> // Serve from Cache self.addEventListener("fetch", event => {
> event.respondWith(
> caches.match(event.request)
> .then(response => {
> return response || fetch(event.request);
> })
> .catch(() => {
> return caches.match('/offline.html');
> })
> ) });

下面是在meta.blade.php中注册Service worker的代码

<script type="text/javascript">
// Initialize the service worker
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/serviceworker.js', {
scope: '.'
}).then(function (registration) {
// Registration was successful
console.log('Laravel PWA: ServiceWorker registration successful with scope: ', registration.scope);
}, function (err) {
// registration failed :(
console.log('Laravel PWA: ServiceWorker registration failed: ', err);
});
}
</script>

我只想在 PWA 中有一个弹出窗口(如果可能的话)。如果不是,则在移动网站上(在移动设备的浏览器上打开时)。弹出窗口提示用户删除当前 PWA 并打开网站,因为有更新并添加新的 PWA(添加到主屏幕)。我该怎么做?

最佳答案

如果您只想在 PWA 中有一个弹出窗口,而不是在桌面或移动浏览器中,您需要查看您的 manifest.json 文件。

应该有一个名为“display”的属性需要设置为“standalone”

"display": "standalone"

确认此设置正确,现在您可以通过执行以下操作检查用户是否使用独立应用程序 (PWA):

if(navigator.standalone) {
alert('Thanks for using our PWA!')
} else {
alert('Please consider downloading our PWA.')
}

关于javascript - 如何仅在 PWA 而不是在网站中显示更新弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58564944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com