首页 > 其他分享 >移动端Android跟ios兼容性问题,反人类!!!

移动端Android跟ios兼容性问题,反人类!!!

时间:2024-09-04 16:25:20浏览次数:5  
标签:兼容性问题 ios month year date Android 如下

一、查询参数编码问题

我们在日常开发中,有时候会遇到拼接参数特别多的情况,那么就会导致一行代码特别长。那么为了美观呢,有的同学会进行换行处理,如下代码:


可以看到我红色框出来的地方就是经过了手动的回车导致产生的回车换行符。这么做乍一看也挺正常是吧,但其实对于JavaScript来说,这是会被保留的。
我们知道,当使用uni.request或其他HTTP客户端发送请求时,浏览器或客户端会对URL后面的查询参数进行编码,也就是问号后面那些东西,于是我们可以自己将编码后的东西打印出来看看,如下:

可以看到我们编码后多了很多%0A%09的东西,而这个其实就是我们的回车换行符,大家可以去在线编解码网站看看解码后的东西。

我把这种情况分别运行在浏览器端、Android端以及ios端,如下:

H5

iPhone

Android

可以看到,即使是这种带入了回车换行符的情况下,在H5以及Android端都是可以正常发送请求的,而ios就没那么幸运了,ios处理比较严格,也可以说是反人类,它不会去处理这种东西,一起给到后端,导致参数错误。

那么解决办法呢有很多种,比如:

通过设置打开Hbuilder X的自动换行,这样的话就不会改变代码并且也不影响代码阅读;
另外也可以通过 ‘+’ 号手动拼接各个参数的写法,比较麻烦;
再不济也可以手动将换行符换成空格也可以。

我这边选择打开自动换行,如下:

在编辑器中看的效果就会根据你的视口宽度自动换行,如下:

二、日期使用问题

在日期的使用上,如果传入的字符串非标准格式(主要就是得用‘-’分割),iso情况下会出现错误。如下代码:

const date = '2024/8'
let year = new Date(date).getFullYear(),
	month = new Date(date).getMonth() + 1
console.log('获取到的年份:', year)
console.log('获取到的月份:', month)

打印结果:

Android

H5

IOS

可以看到当在ios情况下时,获取到的年月都是NaN,那么对后续用到这两个变量的地方都会是意想之外的结果。
所以在使用时要确保传入的值是标准日期格式,如果确保不了就做下格式化处理,如下:

const getMonthStr = (date) => {
	let year = date.getFullYear();
	let month = (date.getMonth() + 1).toString().padStart(2, '0');//这里做下补0操作,避免个位数月份的情况
	return `${year}-${month}`;
};

标签:兼容性问题,ios,month,year,date,Android,如下
From: https://www.cnblogs.com/sweetdreamkx/p/18396491

相关文章

  • Android终端如何快速接入GB28181平台实现实时音视频回传
    技术背景GB28181是由中国国家标准委员会发布的基于IP网络的安防视频监控标准。Android平台GB28181设备对接模块,主要涉及到视频监控领域,可实现不具备国标音视频能力的Android终端,通过平台注册接入到现有的GB/T28181—2016服务,可用于如执法记录仪、智能安全帽、智能监控、智慧零售、......
  • Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点SpannableString在Android开发中是一个非常强大的工具,它允许你在单个字符串范围内应用多种样式。使用SpannableString,你可以为文本中的不同部分设置不同颜色,字体大小,字体......
  • 2-STM32F103+ML307(中移4G Cat1)基本控制篇(自建物联网平台)-整体运行测试-Android扫
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/ML307/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明这节测试一......
  • android java BufferedWriter writer 需要关闭资源吗?
    在Android开发中,使用Java的`BufferedWriter`或其他类似的I/O资源时,**确实需要关闭资源**。这是因为:1.**释放系统资源**:关闭`BufferedWriter`会释放与之关联的底层资源,如文件句柄。2.**保证数据完整性**:确保所有写入操作完成并刷新缓冲区,这样数据才能被完整地写入到文件中。......
  • Android开机流程-从Init进程启动到进入Android桌面
    1.init进程启动流程Androidbootloader负责加载boot.img,将其内容放入内存,然后启动内核。内核接管之后,会解压并加载ramdisk到内存中,然后启动用户空间的第一个进程init。在Android系统启动过程中,ramdisk.img被内核直接解压到内存中并用作初始根文件系统。这一过程不是通过......
  • 【iOS】折叠cell
    折叠cell前言实现原理代码实现原理讲解代码展示前言暑假在仿写3Gshare时使用到了折叠cell,故而现在来总结一下折叠cell,如有不足,还望指正。实现原理在OC中,scrollview是tableview的父类,要想实现折叠cell的效果,我们需要控制在点击按钮前后,tableview的高度变换,同时在点......
  • Android使用addr2line分析Native Crash
    NDK提供的工具将函数地址解析为具体的函数名和行数才能进一步分析问题。常用的地址转换工具有addr2line、ndk-stack等,个人比较喜欢addr2line,所以接下来介绍下该工具的基本使用方式日常使用过程中,只需要关注-C-f-e三个参数即可//-C:Demangle函数名//-f:显示函数名//......
  • Android Gradle 插件的说明
    1、前天运行好好的项目,今天运行就报错:这个意思是Gradle版本低了这个意思是Gradleplugin(8.5.1)最高的compileSdk=34,用了35,就不对,因为一开始我们安装的就是35的版本,我们可以安装下34,然后用34就可以了。2、GradlePlugin这是一种写法,我们也可以这样,用alias,用一个文件......
  • android kotlin基础复习—for while do...while
    1、新建一个文件kt:2、循环的几种用法:forwhiledo...whilefor:println("----for使用-----")valitems=listOf("apple","banana","kiwi")for(iteminitems){println(item)}for(indexinitems.indic......
  • 基于Android的小学数学游戏App的开发与设计-计算机毕业设计源码+LW文档
    摘 要利用了现代科技手段,将传统的小学数学教育与游戏娱乐相结合,为孩子们创造了一个更加轻松、有趣的学习环境。通过游戏化的方式,孩子们能够在玩乐中掌握数学知识,提升逻辑思维能力,激发学习兴趣。这种寓教于乐的学习方式不仅能够减轻孩子们的学习压力,还能有效提高学习效果,为他们今......