记录解决IOS滚动跳转不生效问题

news2024/9/29 19:20:12

目录

背景 :

解决过程 :

解决方案 :

最终代码 :


背景 :

项目类似于问卷星里面的问卷调查,当你点击提交按钮时,

页面会有弹窗提醒你有哪些题型没回答,点击确认之后,

页面滚动条会自动跳转至未回答项的 offsetTop 高度位置

以上就是本期所遇到的问题


原项目代码如下 :

<script>
export default {
	methods: {
		onSubmit() {
			this.$refs.reviseForm.validate().then(
				(res) => this.$emit('submitAnswer', res),
				(err) => {
					let unAnswer = [];
					err.forEach((item) => unAnswer.push(item.name));
					unAnswer = Array.from(new Set(unAnswer));
					Dialog.alert({
						title: '提示',
						message: `${unAnswer.join('、 ')}题未正确作答!`,
					}).then(() => {
						let uaHeight = document.getElementById(
							'revise-' + (unAnswer[0] - 1)
						).offsetTop;
						// 重点标记处(原写法用的是是原生方法,指定不行,IOS容易出bug)
						let scrEle = document.getElementsByClassName('xxx')[0];
						// 重点标记处(scrollTo在IOS的兼容性不太好,IOS项目一般都是用scrollTop=n)
						scrEle.scrollTo({
							// 滚动到未答题型指定位置(IOS未生效)
							top: uaHeight,
							behavior: 'smooth',
						});
					});
				}
			);
		},
	},
};
</script>

解决过程 :


解决方案 :

🈶️两点 :

1、document.getElementByClassName ,这是原生方法

IOS 有的时候获取不到会很容易出 Bug(经常性获取不到 DOM ),指定不行 。

所以我们需要换一种写法来搞 :

 能用 ref 就不用原生的 : this.$refs.xxx. 

2、解决问题的关键点 :

IOS 项目一般都是使用 scrollTop

所以 将 scrollTo( ) 替换为 :scrollTop = n  的写法

 不用 scrollTop , 改用 scrollTop 

( 这里可以判断一下系统,安卓系统完全还是可以使用 scrollTo 的,以保留 smooth 效果 )


最终代码 :

(err) => {
  let unAnswer = []; // 未答项数组
  err.forEach((item) => unAnswer.push(item.name));
  unAnswer = Array.from(new Set(unAnswer));
  Dialog.alert({
    title: '提示',
    message: `${unAnswer.join('、 ')}题未正确作答!`,
  }).then(() => {
    let uaHeight = document.getElementById(
      'revise-' + (unAnswer[0] - 1)
    ).offsetTop;
    // 判断是否为 IOS
    let u = navigator.userAgent;
    let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
    // 重点标记处( 主要代码 )
    if (isIOS) {
      // IOS 项目一般都是使用 scrollTop = n
      this.$refs.ele.scrollTop = uaHeight;
    } else {
      // 重点标记处(scrollTo在IOS的兼容性不太好)
      this.$refs.ele.scrollTo({
        top: uaHeight,
        behavior: 'smooth',
      });
    }
  });
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/920433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习-特殊的6个函数

设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名&#xff0c;年龄&#xff0c;指针成员身高&#xff0c;体重&#xff0c;在设计一个stu类&#xff0c;类中包含私有成员&#xff1a;成绩&#xff0c;Per类对象p1,设计这两类的构造函数&#xff0c;析构函数和拷贝函…

2000-2020年全国各地级市资本存量测算数据(以2000年为基期)(含原始数据和测算过程)

2000-2020年全国各地级市资本存量测算数据&#xff08;以2000年为基期&#xff09;&#xff08;含原始数据和测算过程&#xff09; 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;整理自城市统计年鉴、省份统计年鉴以及各市的公报 3、指标&#xff1a;固定资产投资总额…

DevOps团队如何提高Kubernetes性能

今天&#xff0c;Kubernetes仍然是开发人员最需要的容器。Kubernets最初由 Google 工程师开发&#xff0c;作为跨本地、公共云、私有云或混合云托管的首选解决方案享誉全球。 来自Statista的报告显示&#xff0c;公共云中的Kubernetes市场份额在过去一年中上升了近30%。并且在…

Pandas数据清洗和常用函数

数据清洗 数据清洗是对一些没用的数据进行处理的过程。 当数据出现确实、数据格式错误、错误数据或重复数据的情况&#xff0c;如果我们想要分析的更加准确&#xff0c;就要对没用的数据进行处理。 此时我们学习采用菜鸟教程的数据作为案例&#xff0c;如下图所示。 在途中包…

IDEA常用插件之依赖关系查看Maven Helper

文章目录 安装使用 安装 使用 安装完成后点击pom.xml文件&#xff0c;可以查看Maven依赖关系

Linux下jenkins全量迁移到新服务器

文章目录 1、目的2、迁移1&#xff09;查看jenkins的主目录2&#xff09;登录要迁出的服务器打包3&#xff09;找到对应的war包4&#xff09;登录对应迁入服务&#xff0c;上传war包和打包的jenkins数据等5&#xff09;在新的服务器解压迁入的数据等&#xff0c;并查看端口是否…

新生录取信息收集

随着高等教育的普及&#xff0c;每年都有大量的学生被大学录取。对于学校来说&#xff0c;新生录取确认和信息收集是一项重要的工作&#xff0c;但也是一项繁琐而耗时的任务。然而&#xff0c;通过合理的规划和利用现代科技手段&#xff0c;我们可以轻松搞定这一工作&#xff0…

代码随想录第28天|93. 复原 IP 地址,78.子集, 90.子集II

93. 复原 IP 地址 回溯三部曲 1.递归参数&#xff1a;startIndex一定是需要的&#xff0c;因为不能重复分割&#xff0c;记录下一层递归分割的起始位置 2.递归终止条件 终止条件和131.分割回文串 (opens new window)情况就不同了&#xff0c;本题明确要求只会分成4段&#x…

系统安全——SpringBoot配置文件加密

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;SpringBoot、配置文件、明文加密☀️每日 一言&#xff1a;自己动手丰衣足食~ 一、前言 在日常开发中&#xff0c;项目中会有很多配置文件。比如SpringBoot项目核心的数据库配置、Redis账号密码…

Java基于SpringBoot+Vue实现酒店客房管理系统(2.0 版本)

文章目录 一、前言介绍二、系统结构三、系统详细实现3.1用户信息管理3.2会员信息管理3.3客房信息管理3.4收藏客房管理3.5用户入住管理3.6客房清扫管理 四、部分核心代码 博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云…

openGauss学习笔记-48 openGauss 高级数据管理-函数

文章目录 openGauss学习笔记-48 openGauss 高级数据管理-函数48.1 数学函数48.2 三角函数列表48.3 字符串函数和操作符48.4 类型转换相关函数 openGauss学习笔记-48 openGauss 高级数据管理-函数 openGauss常用的函数如下&#xff1a; 48.1 数学函数 abs(x) 描述&#xff1a;…

网络安全—黑客技术(自学笔记)

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

百度23Q2财报最新发布:营收利润加速增长,AI+生态战略渐显规模

百度集团-SW(9888.HK)Q2财报已于2023/08/22(美东)盘前发布&#xff0c;二季度百度集团整体收入实现341亿元&#xff0c;同比增长15%;归属百度的净利润(non-GAAP)达到80亿元&#xff0c;同比增长44%。营收和利润双双实现大幅增长&#xff0c;超市场预期。其中&#xff0c;百度核…

【Linux操作系统】Linux中的信号回收:管理子进程的关键步骤

在Linux中&#xff0c;我们可以通过捕获SIGCHLD信号来实现对子进程的回收。当一个子进程终止时&#xff0c;内核会向其父进程发送SIGCHLD信号。父进程可以通过注册信号处理函数&#xff0c;并在处理函数中调用wait()或waitpid()函数来回收已终止的子进程。 文章目录 借助信号捕…

stm32之3.key开关

假设key电阻为40kΩ&#xff0c;则key0 的电压3.3v*4/52.64v 2.key开关代码 ② GPIO_OType_PP//推挽输出 GPIO_OType_PP//开漏输出 推挽输出是指输出端口可以同时提供高电平和低电平输出&#xff0c;而开漏输出则是指输出端口只能提供低电平输出&#xff0c;高电平时需要借…

Java加载ICC文件的方法总结

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

C语言实现:从RSA PEM文件中提取私钥n/e/d/p/q/dp/dq/qp因子

我们知道使用openssl命令行openssl rsa -in test_priv.pem -text 即可实现从私钥PEM文件中提取私钥因子&#xff1a;n/e/d/p/q/dp/dq/qp. 那么如何用C语言实现呢&#xff1f;如何在代码中实现呢&#xff1f; #include <stdio.h> #include <stdlib.h> #include &l…

湖北黄石三维扫描文物保护修复文物建模3d打印-CASAIM中科广电

三维激光扫描技术在博物馆领域的运用&#xff0c;主要在以下3个方面&#xff1a;文物保护、文物数字化、虚拟博物馆。随着时间的流逝和人类活动的影响&#xff0c;文物不可避免地会受到来自自然或者人为的侵蚀和破坏。由于CASAIM三维激光扫描技术具有不用接触被测量目标、扫描速…

基于微信小程序的物流管理系统3txar

在此基础上&#xff0c;结合现有物流管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 springboot为基础的物流信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;对目前传统物流管理基础业务进行了较为详尽的了解和分析。根据需求分析结果进行了系统的设计&…

SpringBoot简单入门

星光下的赶路人star的个人主页 充满希望的旅途&#xff0c;胜过终点的到达 文章目录 1、Spring简介2、SpringBoot简介 3、SpringBoot下的配置文件4、HelloWorld4.1 工程搭建4.2 编写访问页面4.3 编写后台程序处理请求4.4 测试 5、Web基础常识5.1 Web请求三要素5.2 常见的html标…