- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发 PWA,刚刚意识到硬件后退按钮似乎无法正常工作。后退按钮将一页一页地返回,直到到达第一页,然后如果继续按它,则不会发生任何事情。我希望窗口最小化(将应用程序发送到后台),但这只有在按下“主页”按钮时才会发生。
[编辑]这不仅仅是一个独立的问题。后退按钮->最小化在移动设备上的浏览器中也无法正常工作(适用于我尝试过的其他页面)。
我在两部三星手机 S8 和 Xcover 4 上重现了此行为。
PWA 是使用 Angular (1.5)/Boostrap 构建的
如何调试这样的东西?每当我在手机上浏览网站时,Chrome Inspect 模拟器都会显示空白。似乎只有在检查器模拟器中导航时它才有效。
我是否错过了 list 中的某个设置或其他内容?我已经包括了我的 list 和服务人员。另外,我想澄清的是,我没有尝试操纵应用程序内的后退按钮......据我所知,这甚至是不可能的。
list :
{
"name": "My app",
"start_url": "/login?utm_source=web_app_manifest",
"short_name": "My app",
"display": "standalone",
"background_color": "#111",
"theme_color": "#111",
"description": "This is a description of My app",
"orientation": "portrait",
"related_applications": [
{
"platform": "itunes",
"url": "http://itunes.apple.com/us/app/myapp/id[removed]"
}
],
"icons": [
{
"src": "gfx\/fg\/favicon-16x16a.png",
"sizes": "16x16",
"type": "image\/png",
"density": "0.75"
},
{
"src": "gfx\/fg\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "gfx\/fg\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "gfx\/fg\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "gfx\/fg\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "gfx\/fg\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "gfx\/fg\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}
Serviceworker(来自 pwabuilder.com)
//Install stage sets up the offline page in the cache and opens a new cache
self.addEventListener('install', function(event) {
event.waitUntil(preLoad());
});
var preLoad = function(){
//console.log('[PWA Builder] Install Event processing');
return caches.open('pwabuilder-offline').then(function(cache) {
//console.log('[PWA Builder] Cached index and offline page during Install');
return cache.addAll(['/offline.html', '/index.html']);
});
}
self.addEventListener('fetch', function(event) {
//console.log('The service worker is serving the asset.');
event.respondWith(checkResponse(event.request).catch(function() {
return returnFromCache(event.request)}
));
event.waitUntil(addToCache(event.request));
});
var checkResponse = function(request){
return new Promise(function(fulfill, reject) {
fetch(request).then(function(response){
if(response.status !== 404) {
fulfill(response)
} else {
reject()
}
}, reject)
});
};
var addToCache = function(request){
return caches.open('pwabuilder-offline').then(function (cache) {
return fetch(request).then(function (response) {
//console.log('[PWA Builder] add page to offline'+response.url)
return cache.put(request, response);
});
});
};
var returnFromCache = function(request){
return caches.open('pwabuilder-offline').then(function (cache) {
return cache.match(request).then(function (matching) {
if(!matching || matching.status == 404) {
return cache.match('offline.html')
} else {
return matching
}
});
});
};
最佳答案
我有完全相同的问题,我在我的案例中找到了原因。我的 PWA 正在对历史记录做几件事,但问题的根源归结为:
Android 上的 Chrome 不允许通过 History.back() 以编程方式关闭全屏 PWA。您可以多次调用history.back(),它永远不会关闭应用程序。即使历史记录为空,以编程方式调用history.back()也不会关闭应用程序。关闭应用程序的唯一方法是物理按后退按钮。当且仅当当前没有返回历史记录时,物理后按才会关闭应用程序。
更新更多详细信息:最终,上述问题导致后退按钮无法关闭应用程序。更深层次的原因在于我们的应用程序对历史所做的事情。我会尽量保持简单。当页面首次加载时,我们的应用程序会将状态推送到历史记录中,并尝试始终将此状态保留在历史记录中。每当发生反向导航时,应用程序都会操纵历史记录并确保重新推送状态。当应用程序检测到用户想要关闭应用程序时,它将停止执行其操作,并将递归调用history.back(),直到页面关闭。这在大多数情况下都可以正常工作,但在全屏 PWA 中不起作用。原因在我原来的回答中有描述。
总而言之,有一些方法可以轻松地破坏后退按钮关闭应用程序的功能。操纵历史记录时必须小心。
关于back-button - PWA 中的后退按钮不会关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849321/
浏览器或类似浏览器的应用程序中的后退和前进按钮暂时导航(用户导航页面的顺序),这可能不一定反射(reflect)页面的逻辑顺序。是否有任何研究探讨这如何影响用户的心理模型?关于如何提高可用性和减少困惑
如果你去http://www.deviantart.com/并等待几秒钟,以便在引擎盖下加载 javascript,您可以单击一个链接,而不是转到该链接,您将转到 #/someId。您可以后退/前进。
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
This question already has answers here: How to stop audio from playing when back button is pressed?
Visual Studio 有一个名为 MouseNavi 的插件它允许您使用鼠标拇指按钮来浏览您的历史记录。 Eclipse 是否存在类似的扩展? 最佳答案 我不知道有任何 Eclipse 插件可以
我在grails上开发了一个小应用程序,第一页是我提供的邮政编码,可以按商店搜索附近的商店并选择它,然后按下一步按钮,第二页上是输入客户详细信息,然后按下一步按钮在第三页上显示输入的值,然后保存它。现
我有一个带有表单的页面,我试图在其中防止重复提交,这非常简单(以防万一有人好奇,我使用了这个 $("form").submit(function() { setTimeout(function
在过去的两天里,我一直在用一个恼人的小故障敲我的头,希望有人能解释一下。 基本设置:我有一个带有播放器的 AVPlayerLayer, View 中有一个平移手势识别器,我希望用户能够来回滑动手指,视
我有一个相当具体的用例。 假设我从页面 A 导航到页面 B(添加一个历史状态)。然后,在页面 B 上,我通过打开模式与该页面进行交互。但模式的实现方式是在单击浏览器后退按钮时关闭。 当模式打开时: n
我以前自己尝试过,但失败了。如何将 JButton 添加到 JFrame 以将其带回到之前打开的 JFrame 或“主页”框架。 在我的应用程序中,我有 4 个 JFrame,主要的和 3 个可通过按
想法是显示消息,这将通知用户,当他使用“后退”按钮时,应用程序的ajax部分可能会错误地工作。是的,有很多讨论,但没有解决方案。我发现最好的:在服务器端存储有关最后一页的信息,并通过 ajax 检查当
我有一个带有Fragment的Activity,并且有很多交易,所以后退按钮通常只是回滚Fragment交易 .但我需要检测最后一次按下。 我不能使用 onPause 方法,因为我不想在用户按下主页或
我目前使用Glide库播放GIF如下。 Glide.with(this).load(gifUrl).into(ImageView); 这很好用,但我希望用户可以选择倒回、暂停和转发 GIF。我在想只是
我正在开发一个 WPF 桌面应用程序,我有一个主窗口,我使用框架控件导航到不同的页面。它工作得很好。但我希望删除后退/前进。我该怎么做 ?请在这方面帮助我! 最佳答案 设置 NavigationUIV
我正在游戏结束时显示插页式广告。当用户快速按下“后退”按钮时,有时会发生崩溃: java.lang.IllegalStateException at android.media.MediaPlayer
我想禁用导致 Chrome 后退或前进的两指滑动。 我有一个网站,如果用户没有专门保存,他可能会失去工作进度。 我试过使用 window.onbeforeunload但是,如果我在 url 中有哈希值
后退箭头在 Xcode 中损坏? 是否有键盘命令可以一次后退/前进一个文件。 Xcode 3.2更改了 Cmd-Opt 的行为。正如另一个问题中所指出的,它们不像以前版本的 Xcode 那样在文件级
我有这些复选框 Menu Filters Select All Unselect All Vegan Vegetar
我想在按下返回按钮时将我当前的 flutter 页面重定向到主页,将重定向。当我按返回按钮时,主页/ Activity 应开始。我在主页中有多种选择,在当前页面中,如果用户不想选择它们,我可以显示眼睛
按住下一个按钮时,音频播放器速度加快... 代码代表一切 main question : How to continue to normal ? 这是我的尝试 http://jsfiddle.net/
我是一名优秀的程序员,十分优秀!