尽管要多加避免,但还别说,坑还真得常踩常有,不要以为手机端都是 Webkit 的天下就简单,不用处理浏览器之间的兼容问题,——其实不一致性的问题还是挺大的。
两个坑都是涉及 iframe 的——iframe 真是不好搞!
事情是这样的,一个内嵌于 iframe 的页面,因为需要从认证接口中返回 token 作为登录凭证,读取接口信息是没问题的,然后需要用 session 把登录信息保存起来。奇怪的是,session 无效,就像丢失了一样!脱离了 iframe 就是单独页面的话就没事。而且不是全部手机都这样,高版本安卓和苹果都这样(桌面和某些版本安卓正常)。我们知道一般用 cookies 一对一 session 的,估计 iframe 的 cookie 鉴于更完善的安全机制所以不能像低版本那样“愉快”地使用 cookies。
后来简直与甲方说出了我们“殚精竭虑”,无奈之下,只好使出最笨的方法,通过 url 参数传递认证数据。还好几个页面,加起来也没那么痛苦了……
第二个坑是苹果专属的,Safari 居然不能约束 iframe 内页面的宽度!安卓就 ok。简单说发现嵌入页面在移动端会出现变形,即使你加上
<meta name="viewport" content="width=320, initial-scale=1, user-scalable=yes" />
也无效。如果写死一个宽度那么就不能兼容苹果各种屏幕了。于是我居中正文,但有些人又不同意这种不符合美观的做法,于是我用 js 读取屏幕宽度然后写入 document.body.style.width。两行代码搞定,关键是思路。
时间: 2024-09-25 06:17:51