我正在试图迫使我的网站在页面重新加载时滚动到顶部,并且它可以在除不支持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?
答案 0 :(得分:0)
即将卸载窗口,文档及其资源时,将触发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;
}