微信页面里iphone点返回不刷新问题

本文介绍了在微信环境中H5页面遇到的返回卡死问题及其两种解决方法:通过刷新页面来解决卡顿,或者直接关闭当前窗口。此外,还对比了HTML5中pushState与replaceState的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

> 1.问题描述:

微信开发的时候,在公众号菜单中打开一个H5页面(如:分享的视频详情页面),微信授权登录有跳转操作,点击左上角的返回按钮,(由于本页面第一次进来的时候没有加载完就发生了自身页面的跳转),发现会出现卡死的情况。

解决方式1:微信页面里iphone点返回进行刷新操作

 

$(function() {
    pushHistory();
    window.addEventListener("popstate", function(e) {
        alert("后退");
        self.location.reload();
    }, false);
});
function pushHistory() {
    var state = {
        title : "",
        url : "#"
    };
    window.history.replaceState(state, "", "#");
};

解决方式2:微信页面里iphone点返回直接退出

 

if(browser.versions.ios){
    pushHistory();
    window.addEventListener("popstate", function(e) {
    	WeixinJSBridge.call('closeWindow');
    }, false);
}
function pushHistory() {
    var state = {
        title: "",
        url: window.location.href
    };
    window.history.pushState(state, state.title, state.url);
}

 

> 2.HTML5 history新特性pushState、replaceState区别:

--------------------------------------------------------------------------------

参数:

state:与要跳转到的URL对应的状态信息。

title:可以不传

url:要跳转到的URL地址,不能跨域。

--------------------------------------------------------------------------------

history.pushState(state, title, url)

将当前URL和history.state加入到history中,并用新的state和URL替换当前。不会造成页面刷新。

--------------------------------------------------------------------------------

history.replaceState(state, title, url)

用新的state和URL替换当前。不会造成页面刷新。

--------------------------------------------------------------------------------

两者看似没有区别,其实区别很大的,pushState是添加历史记录的,而replaceState是不添加的。

在ios系统上使用这两个操作历史记录,会有很多问题要处理,因为ios本身在微信上有点击返回不刷新页面的问题,处理起来比较麻烦,所以慎用!

 

相关文章:

微信浏览器左上角返回按钮的监听点击打开链接

微信里iphone后退不刷新问题解决方案,真实有效点击打开链接

HTML5 history新特性pushState、replaceState及两者的区别点击打开链接

### 微信小程序中 `location.href` 生效的原因 在微信小程序环境中,传统的基于浏览器的导航方式如 `location.href` 并适用。这是因为微信小程序有自己的路由机制,无法直接使用标准网页中的 URL 跳转方法[^1]。 ### 替代解决方案 #### 使用 wx.navigateTo 或其他 API 进行页面跳转 对于微信小程序而言,推荐使用官方提供的 API 来实现页面之间的跳转: ```javascript wx.navigateTo({ url: 'newPage?param=value' }) ``` 此函数用于保留当前页面,跳转到应用内的某个页面。但是能跳到 tabbar 页面[^3]。 如果需要关闭当前页面返回上一页面或多级页面,则应考虑使用 `wx.navigateBack()` 方法;而要重新加载当前页面的数据或状态时,可采用 `onPullDownRefresh()` 下拉刷新功能来代替简单的页面重载操作。 另外,在某些特定场景下(比如从外部链接进入),可以通过设置全局变量或者本地存储的方式传递参数给目标页面,并利用 onLoad 生命周期函数读取这些参数完成相应的初始化工作。 #### 处理跨平台兼容性问题 考虑到同终端可能存在差异化的表现形式,建议加入设备检测逻辑以确保最佳用户体验: ```javascript function isIOS() { const userAgent = window.navigator.userAgent; return /iPhone|iPad|iPod/.test(userAgent); } if (isIOS()) { // 对于 iOS 设备采取特殊处理措施 } else { // 非 iOS 的常规处理流程 } ``` 上述代码片段展示了如何识别运行环境是否为 iOS 系统,从而针对性地调整行为模式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值