移动端点击返回键 页面不刷新

在浏览器中点击返回或者前进按钮时,页面不刷新的问题。这个问题存在于移动端居多,尤其是苹果手机。

这种问题经常在微信、uc这类的浏览器出现,这是因为浏览器保存了DOM和js的状态,相当于保存了整个页面,这种特性称作 “往返缓存”(back-forward cache,或bfcache)。
对于这种情况可以用“pageshow”事件来解决,“pageshow”事件表示浏览器展示文档的时候触发,并且是在“onload”事件之后触发。如果浏览器是存在往返缓存机制的话,

那么onload事件就只会触发一次,而“pageshow”事件则每次都会触发。这里需要注意“pageshow”事件必须绑定在window这个对象中,如下代码:

<!DOCTYPE html>            
<html lang="en">            
<head>            
<meta charset="UTF-8">     
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">     
<title>移动端点击返回键 页面不刷新</title>          
<style type="text/css">          
</style>           
</head>            
<body>        
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>      
<script type="text/javascript">      
window.addEventListener('pageshow', function(event) {
    //event.persisted属性为true时,表示当前文档是从往返缓存中获取
    if (event.persisted) {
        location.reload();  
    }
});
</script>      
</body>            
</html>  








posted @ 2018-06-19 16:34  徐同保  阅读(408)  评论(0编辑  收藏  举报