iOS Safari Mobile不会触发pageshow只触发一次
在以下情况下,iOS Safari似乎不会触发pageshow事件。
可以说我有3页
- 页面A :(在pageshow事件上有一些代码)
- 页面B
- 页面C
用户从A -> B
导航。 按下后退button。 (pageshow触发正常)
用户然后导航到另一个页面可能是页面B或页面C.然后再次按下后退button。 (pageshow不会触发)
相反,如果用户再次最小化和最大化窗口或切换到另一个窗口并返回(通过按下iPhone上的中间button),则页面显示事件再次被触发。
一切似乎在Android上正常工作
window.onpageshow = function(e) { alert('hello'); }
有没有其他人面对呢? 我花了几个小时在这个东西,想不到一个解决方法。
任何帮助将不胜感激。
哈克:这是为我工作
var myCustomEvent = (navigator.userAgent.match('iPhone') != null) ? 'popstate' : 'pageshow'; $(window).on(myCustomEvent, function(e) { ... }
出于某种原因,当iOS中的页面状态发生变化时, popstate
每次popstate
触发,而Android中则不会。
尝试使用:
window.onpageshow = function(event) { if (!event.persisted) { alert("hello"); } };
初始页面加载时,Persisted为false,因此您可以检查它,如果它是false,则是您的首页加载。
popstate
事件似乎不再起作用,至less对我来说。 我在网页上制定了一些第三方脚本,但是无法确定哪一个脚本。 我想出了这个黑客:
addEventListener('pageshow', () => { history.replaceState({}, document.title, window.location.pathname); // called on initial load and first back }); addEventListener('popstate', () => { // called on all back events });
- 问题iOS 7移动Safari滚动键盘上下滚动事件
- 无法通过https播放iPad <audio>
- 如何在iOS 7的Web应用程序中设置状态栏的颜色?
- iPhone上的Safari有没有等同于Android的<meta name ='viewport'content ='target-densitydpi = device-dpi'>?
- iPhone Safari上“添加到主屏幕”的url是否可以自定义?
- 使用UIWebView构buildHTML5 iOS应用程序
- IOS Safari支持插件?
- 检测浏览器是否支持embedded式媒体的自动播放 – YouTube playVideo()和iOS
- iOS 11(Beta)中的webKit是否支持WebRTC?