首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS14 history.back()无法工作。history.length始终为== 0

基础概念

history.back() 是 Web 浏览器提供的一个 JavaScript 方法,用于模拟浏览器的后退按钮功能,使用户能够返回到上一个访问的页面。history.length 属性则表示当前浏览器历史记录中的条目数量。

相关优势

  • 用户体验:提供直观的后退功能,增强用户导航体验。
  • 一致性:与浏览器的原生后退按钮行为一致,减少用户的学习成本。

类型

  • 浏览器内置功能history.back()history.length 是浏览器提供的标准 API。

应用场景

  • 单页应用(SPA):在 SPA 中,页面内容通过 JavaScript 动态加载,使用 history.back() 可以实现页面间的导航而不刷新整个页面。

可能遇到的问题及原因

在 iOS 14 中,history.back() 可能无法正常工作,history.length 始终为 0,这通常是由于以下原因:

  1. Safari 浏览器的限制:iOS 14 的 Safari 浏览器可能对某些历史记录 API 进行了限制或更改。
  2. 页面加载方式:如果页面是通过 window.location.replace()window.location.href 加载的,这些操作会替换当前历史记录条目,而不是添加新的条目。

解决方法

  1. 检查页面加载方式: 确保页面是通过 window.location.assign() 或直接修改 window.location.href 加载的,而不是通过 window.location.replace()
  2. 检查页面加载方式: 确保页面是通过 window.location.assign() 或直接修改 window.location.href 加载的,而不是通过 window.location.replace()
  3. 使用 history.pushState(): 手动添加历史记录条目,确保 history.length 不为 0。
  4. 使用 history.pushState(): 手动添加历史记录条目,确保 history.length 不为 0。
  5. 检测浏览器版本: 在代码中检测浏览器版本,针对 iOS 14 进行特殊处理。
  6. 检测浏览器版本: 在代码中检测浏览器版本,针对 iOS 14 进行特殊处理。
  7. 使用第三方库: 如果上述方法都无法解决问题,可以考虑使用第三方库如 history.js 来管理历史记录。
  8. 使用第三方库: 如果上述方法都无法解决问题,可以考虑使用第三方库如 history.js 来管理历史记录。

参考链接

通过上述方法,可以解决 iOS 14 中 history.back() 无法工作和 history.length 始终为 0 的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

HTML 面试要点:History 和 Hash 路由方式

同时,浏览的页面内容在用户下次使用 URL 访问时将无法重新呈现,使用路由可以很好地解决这个问题。...History 对象 (opens new window),它表示当前窗口的浏览历史,当发生改变时,只会改变页面的路径,不会刷新页面 History 对象保存了当前窗口访问过的所有页面网址,可以通过 history.length...当前窗口访问过的页面数量(含当前页面) History.state History 堆栈最上层的状态值 history.length; // 1 history.state; // undefined...如果参数超过实际存在的网址范围,该方法无效果 如果不指定参数,默认参数 0,相当于刷新当前 history.back(); history.forward(); history.go(1); // 相当于...history.forward() history.go(-1); // 相当于 history.back() history.go(0); // 相当于刷新当前页面 History.pushState

81920
  • JavaScript学习笔记027-BOM0window0location

    Author:Mr.柳上原 付出不亚于任何的努力 愿我们所有的努力,都不会被生活辜负 不忘初心,方得始终 这几天找工作 遇到一件让我非常尴尬的问题 赶场似的用了三天学了vue和小程序开发 然后赶出两个实战项目...location.pathname; // 获取地址的路径 location.protocol; // 获取地址协议 location.reload(); // 重载当前页面(刷新) // history 浏览器历史记录 history.length...; // 查询当前窗口访问过多少次网站 history.back(); // 后退到前一次访问的网站 history.forward(); // 前进到后一次访问的网站 history.go(); //...open(url, target); // 打开浏览器或窗口,第一个参数打开对象的地址,第二个设置新窗口还是原窗口打开 close(); // 关闭窗口 setTimeout(); setInterval...confirm("fy"); // 浏览器弹窗,与alert类似,多了取消键,取消键不会输出内容,确定为true,取消false prompt("fy"); // 带输入框的浏览器弹窗,第二个参数输入框的默认值

    49330

    【面试题】hash 与 history 路由的实现原理

    所以这种模式不利于 SEO 优化 2. hash 通过 window.onhashchange 的方式,来监听 hash 的改变,借此实现无刷新跳转的功能 3. hash 永远不会提交到 server 端(可以理解只在前端自生自灭...console.log(event) // container.innerHTML = event.newURL container.innerHTML = `当前的路由$...例如: history.back(); (后退一步,使用history.go(-1)也可实现后退效果) 弊端:只能操作前进后退,但是无法控制前进后要去哪,history.length都只会维持原来的状态...使用方法: history.pushState(data,title,url); //其中第一个参数data是给state的值;第二个参数title页面的标题,但当前所有浏览器都忽略这个参数,传个空字符串就好...,而replaceState不改变history.length ---- 苟有恒 , 何必三更眠五更起

    1.5K10

    单页面应用history路由实现原理

    ()//向后跳转 history.forward()//向前跳转 跳转到指定的点 此api调用方式: history.go(1) go的参数你要跳转到的url相对当前url的位置标志。...history.replaceState() 方法,这两个方法都可以跳转到指定的url页面,主要区别在于replaceState() 是修改了当前的历史记录项而不是新建一个,也就是说history.pushState()之后,history.length...新URL不必须绝对路径。如果新URL是相对路径,那么它将被作为相对于当前URL处理。新URL必须与当前URL同源,否则 pushState() 会抛出一个异常。该参数是可选的,缺省当前URL。...page=3,条目索引为3 history.back(); // 弹出 "location: https://www.oecom.cn/example.html?...state,而不必等待popstate 事件, 只需要这样使用history.state 属性: let currentState = history.state; 上面我们说了popstate事件,这个事件无法监听

    3.2K10

    修复android下webView控件的总结

    游戏中有一个收集玩家问题反馈的网页,很早之前就有同事反映说android在游戏无法上传附件,在浏览器中是可以正常使用的。...我记不得那个网址了,是在stackoverflow上的,但是它的那个参数有点问题,上面三个函数中好像有一个函数的参数它写的是“ValueCallback”没有后面的,这个其实是有问题的,统一ValueCallback...网上搜索了很多方法,也尝试了很多,结果都失败了,尝试的几种方案: SmartPhone Web开发问题总结 Android : Detect history.back() in WebView Why...然后我尝试直接本地修改代码,页面载入完成时调用history.go(-1)是能正常工作的。...Content-Disposition的详情可以参数这篇文章:正确处理下载文件时HTTP头的编码问题(Content-Disposition) 源码我就没仔细看过了,然后我换了一种写法:history.go(1 - history.length

    1.6K20

    我不知道的前端(一)

    [1,array.length-1],第二个到结尾 第二个参数,即b,array[0,array.length-2],第一个到倒数第二个 a-b的通意即后一项减前一项的值 当函数返回值小于0,则...一些方法: history.back() - 等同于在浏览器点击后退按钮 history.forward() - 等同于在浏览器中点击前进按钮 history.go() - go() 方法可加载历史列表中的某个具体的页面...一些属性 history.length - 返回历史记录列表中的URL数量,包括当前加载的页面 ---- 阻止浏览器默认行为 window.event.returnValue = false event.preventDefault...---- Promise的done与扩展always(或者说finally) done Promise 对象的回调链,不管以then方法或catch方法结尾,要是最后一个方法抛出错误,都有可能无法捕捉到...promise.then(()=>{},()=>{ console.log('fail'); }) ---- 关于this 的工作原理,4种情况 1、当在函数调用的时候指向widow 2、当方法调用的时候指向调用对象

    56010

    再谈location与history之跳转转态监控—router的两种实现模式

    如果把该方法的参数设置 true,强制刷新当前页面。...(state,title,URL):更改当前浏览器的历史记录,即把当前执行此代码页面的记录给替换掉,参数与pushState相同;history.back()、history.forward()、history.go...Number可正可负,即向前或向后若干个记录history.state:返回当前页面状态参数,此参数一般由history.pushState及history.replaceState附带的state值history.length...window.history.back();window.history.go(-1);向前跳转window.history.forward();window.history.go(1);当前页window.history.go(0)...在history.back(),history.forward(),history.go()时触发此事件,但是在history.pushState();history.replaceState();时并不会触发此事件

    2.4K10

    iOS14适配汇总:【1、隐私权限相关:定位、相册、IDFA 2、KVC相关3、UIView相关;4、网络相关】

    隐私权限适配:【相册权限】 iOS14相册权限适配 :Limited Photo Access模式、PHAccessLevel(请求查询limited权限在 accessLevel readAndWrite...UIDatePickerStyleInline;原来播轮样式UIDatePickerStyleWheels iOS 14适配CALayerDelegate的displayLayer方法的处理机制(问题:无法显示图片...name: com.apple.root.user-initiated-qos, QoS: 25 Backtrace: 4 retail 0x000000010576b628...name: com.apple.root.user-initiated-qos, QoS: 25 Backtrace: 4 Housekeeper 0x0000000100f3c000...V、网络相关 iOS14 开启 encrypted DNS 提高安全性,防止DNS 劫持 1、iOS网络请求安全优化:SSL证书验证, 让Charles再也无法抓你的请求数据;对请求参数进行签名;2、

    1.6K30

    iOS14 定位适配:1、向用户申请临时开启一次精确位置权限的方案2、高德定位SDK适配

    在 iOS13 及以前,App 请求用户定位授权时如下形态:一旦用户同意应用获取定位信息,当前应用就可以获取到用户的精确定位。 ?...iOS14 新增用户大致位置选项可供用户选择(原因是大多数 App 实际上并不需要获取用户到用户最准确的定位信息。) iOS14 授权弹窗新增的 Precise的开关默认会选中精确位置。...对于对用户位置敏感度不高的 App 来说,这个似乎无影响,但是对于强依赖精确位置的 App 适配工作就显得非常重要了。 用户可以通过在 “隐私设置” 中设置来开启精确定位,但是若用户不愿意开启。...设置之后,即使用户想要为该 App 开启精确定位权限,也无法开启。 注意:当 App 在 Background 模式下,如果并未获得精确位置授权,那么 Beacon 及其他位置敏感功能都将受到限制。...0 553k 0 0:00:03 0:00:03 --:--:-- 553k $ /usr/bin/unzip /var/folders/6t/z1p2xgls4wz_pw36r58hhspr0000gn

    6K30

    iOS-定位

    如下面图示 -需要注意该字段类型Boolean,如果其他类型则不起效; -配置该字段后,申请定位权限的小地图左上角则没有精确开关,默认关闭,如下面图示。...直接调用requestAlwaysAuthorization申请权限时,权限弹窗与调用requestWhenInUseAuthorization一样,在app进入后台后,系统会择机弹窗提示用户是否要权限升级始终允许...desiredAccuracy; -当精度设置较高时,定位服务会尽可能去获取满足desiredAccuracy的定位结果,但不一定会得到满足期望的结果; -kCLLocationAccuracyReducediOS14...= 0; if (hasLocationTemporaryKey) { //此API不能用于申请定位权限,只能用于从模糊定位升级精确定位;申请定位权限只能调用...= 0; if (hasLocationTemporaryKey) { //此API不能用于申请定位权限,只能用于从模糊定位升级精确定位;申请定位权限只能调用

    1.3K20

    History API与浏览器历史堆栈管理

    一般设置相对路径,如果设置绝对路径时需要保证同源。 pushState函数向浏览器的历史堆栈压入一个url设定值的记录,并改变历史堆栈的当前指针至栈顶。...尽管无法访问当前页的历史记录栈,但是浏览器却提供了history.length属性,它标明了当前历史记录栈的个数。该值会帮助我们更好地分析History API对历史记录栈的影响。 ?...执行pushState函数可压入设定的url至栈顶,同时修改当前指针; 当执行back操作时,history栈大小并不会改变(history.length不变),仅仅移动当前指针的位置; 若当前指针在...这里就需要history.back来完成。...在代码中执行history.back 或者history.forward,并不会立即返回,也不会立即触发popState事件。

    2.8K50

    【周末水文】我的iPhone7升级到了iOS14后,又可以再战两年了

    冒死升级iOS14 苹果在9月17号推送了iOS14正式版,我在当天早上冒死(本人手机iphone7)升级到了iOS14。 升级成功 这几天使用下来我的感受是系统更流畅了,发热也减少了。...下面我们来说说iOS14有哪些新增功能 个性化的小组件 如上图,iOS14支持在桌面添加小组件了,目前大部分组件是原生app的小组件,少数第三方应用也支持。第三幅图中我用的就是第三方小组件了。...点击小组件后会直接跳转到 app 中,因此无法进行连续点按操作,像是计算器类 Widget 就无法实现; 无法主动更新数据。小组件更偏向于「静态的」信息展示; 页面动态性更弱。...mmversion=false 其他人性化的功能 当然iOS14还有很多人性化的改良,比如: 来电电话,和Siri可以设置不用全屏了 短信可以使用语音了(虽然我们早已不用短信而是用微信了) 轻触 iPhone...=0&mmversion=false

    97910

    02_JavaScript学习笔记整理-BOM浏览器对象模型

    ; //获取超链接标签里面的文本内容 window.document.links[0].innerHTML; document对象:能反映当前页面的各种属性。...访问历史 Window对象属性对象History history.go(index)函数,在浏览器历史记录中跳转,正数前跳,负数后跳 history.back()函数,后跳; history.forward...()函数,前跳; history.length属性,获得历史记录的长度; //------------------------------------------ 让按钮点击失效:onclick=”javascript...:volid(0)” Navigator 属性对象 navigator对象用于获得浏览器相关信息;使用console.dir(navigator)查看成员信息。...用于指定一段时间后执行某函数 setInterval(fn,time)函数,返回timer,用于周期性执行某函数; 参数fn可以是字符串组成的jascript代码,也可以是一个函数名称; 参数time表示时间,毫秒单位

    54610

    Hexo系列(2.1) - NexT主题美化与博客功能增强 · 第二章

    当我美滋滋地享受了Gitment一段时间后,开始发现一些问题: GitHub是个神奇的网站,有时候会登陆不上去,这导致我的个人站点加载页面时无法把Gitment加载出来,这使得我的页面长时间处于一片空白的状态...由于国内有些地区在有些时段是无法访问到GitHub的,这将导致我的页面长时间假死。...于是就去了GitHub的api里查看了自己的id,然后填了一串数字进去,之后花费了我几个小时的时间,始终有授权失败的错误,最后终于发现,这个ID其实是要填的用户昵称…orz GitHub的api地址:https...# 自动文章目录添加行号 number: true 设置true后就可以对站点下所有文章自动添加序号,如果想取消这个功能,再设置false即可。...,其历史页面只有一个,也就是history.length === 1时,就算不输入密码或者输入错误的密码,也会在提示密码错误之后成功进入文章页面!!!

    83710
    领券