iOS 移动页面刷新时触发哪些事件
Posted
技术标签:
【中文标题】iOS 移动页面刷新时触发哪些事件【英文标题】:What events trigger on an iOS mobile page refresh 【发布时间】:2018-07-08 21:25:40 【问题描述】:我试图在重新加载页面时强制我的网站滚动到顶部,并且它在除不支持 beforeunload 的 ios 之外的所有地方都可以工作,我想知道当页面被触发时是否还有其他事件神清气爽。
适用于所有其他浏览器的解决方案
$(window).on('beforeunload', function()
$(window).scrollTop(0);
);
我在 iOS 上尝试过但没有成功
$(window).on('pageshow', function()
$(window).scrollTop(0);
);
$(window).on('pageshow', function()
$(window).scrollTop(0);
);
$(window).on('popstate', function()
$(window).scrollTop(0);
);
我检查过的话题
Alternative for jQuery beforeunload event handler on mobile devices
Is the onbeforeunload event not supported on iPhone?
Is there an alternative method to use onbeforeunload in mobile safari?
window.onbeforeunload not working on the iPad?
【问题讨论】:
【参考方案1】:当窗口、文档及其资源即将被卸载时,beforeunload
事件被触发。
所以这就像你试图让页面滚动到顶部......然后,让页面刷新发生。
刷新后如何让它滚动到顶部?作为首先要执行的... 普通的 javascript scrollTop 属性应该在你的脚本标签的最开始......当页面加载时。
window.scrollTop = 0;
但这将确保页面在任何加载时都加载到顶部...也可以从另一个页面加载。如果您希望 scrollTop 仅在“自我重新加载”时出现,请尝试以下操作:
// Retreive the previous pageName
var previousPageName = localStorage.getItem("pageName");
// Give a unique name to the actual page
var pageName = "About Us";
// Then store it for a future load
localStorage.setItem("pageName", pagename);
// Now check if the previous pageName was the same as now
// If so, then scroll to top
if(pageName == previousPageName)
window.scrollTop = 0;
【讨论】:
以上是关于iOS 移动页面刷新时触发哪些事件的主要内容,如果未能解决你的问题,请参考以下文章