哪些事件触发了iOS移动页面刷新

时间:2018-07-08 21:25:40

标签: javascript jquery ios responsive-design mobile-safari

我正在试图迫使我的网站在页面重新加载时滚动到顶部,并且它可以在除不支持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 个答案:

答案 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;
}