最近移动前端项目中遇到的两个坑

尽管要多加避免,但还别说,坑还真得常踩常有,不要以为手机端都是 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

最近移动前端项目中遇到的两个坑的相关文章

图片显示-Android 项目中不能显示两张以上图片

问题描述 Android 项目中不能显示两张以上图片 public class MainActivity extends Activity { private ImageView[] img=new ImageView[4];//声明一个保存ImageView组件的数组 private int[] imagePath= new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04};//声明并初始化一个

运维专家:我在大数据项目中踩过的那些坑

一.主要讨论人员 提问:陈超,七牛云技术总监 回答:朱冠胤,百度资深大数据专家,连续两次百度最高奖得主. 二.引言 "坐而论道"是一个轮流问答的玩法.本文是大数据主题周中,几位国内一线专家激情问答的一部分内容.期间,各位群友也积极参与. 三.问题集锦 1.MongoDB在百度的使用场景及规模? 2.假设现在让你完全主导一个类似Hadoop的项目,你会选择哪种语言? 3.分享你在百度各种大数据项目中踩过的坑? 4.你所在团队在自研和使用开源方案的主要考虑因素? 5.新一代分布式数据库(N

使用NSTimer过程中最大的两个坑

坑1. retain cycle问题. 在一个对象中使用循环执行的nstimer时,若希望在对象的dealloc方法中释放这个nstimer,结局会让你很失望. 这个timer会导致你的对象根本不会被释放,所以不会调用dealloc方法,同时这个nstimer也永远不会停止. 解决方案: a. 变更你的意图,在对象被释放之前你如果能保证触发timer的invalidate,那么你可以避免这个问题. b.给你的对象加一个weak的代理,让这个代理去当冤大头,供timer去强引用:同时这个代理不会持

前端flex后台java的两个独立项目在myeclipse中如何部署到tomcat

问题描述 前端flex后台java的两个独立项目在myeclipse中如何部署到tomcat 我是刚接触前段用flex后台用java的项目,在Myeclipse中分别导入项目后,两个项目怎么编译?以及在deploy project,弹出来的窗口中选择框里没有我刚才导入的那个项目.请问这样的项目怎么部署到tomcat中,如果要手动部署怎么部署?我是新手菜鸟,希望大神能帮我指点详细一点,谢谢,谢谢,谢谢............快过年了,祝您,身体健康!阖家欢乐!财源广进! 解决方案 设置不同的端口即

在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式,虽然Web API或者WCF方式的调用,相对直接连接数据库方式,响应效率上略差一些,不过扩展性强,也可以调动更多的设备接入,包括移动应用接入,网站接入,Winfrom客户端接入,这样可以使得服务逻辑相对独立,负责提供接口即可.这种方式中最有代表性的就是当前Web API的广泛应用,促进了各个接入端

讲座:《B/S项目中前端与后端的配合》(含PPT及MM下载)

本文提供了2010年3月20日,博客园张江聚会时讲座<B/S项目中前端与后端的配合>的相关资料.其中用于演讲的演示,是由&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;Mindjet-MindManager-Pro7这个脑图软件制作的脑图.没有安装MindManager7的朋友,可以在文末找到这个软件的下载. 演讲主题及大纲 首先感谢所有前来参加这次聚会的朋友,以及阅读这篇文章的朋友.这次我演讲的主题是

如何将一个项目中的功能加到另一个项目中,实现一次操作运行两个项目的功能

问题描述 如题,有两个项目分别实现两个功能,如何将一个项目中的功能加到另一个项目中,实现一次操作运行两个项目的功能 解决方案 解决方案二:第三个项目(解决方案),它应用了两个项目,调用(系统集成)了两个项目.这种事情,自己多想想.不要怕出错.你若没有动手动手能力,你就总想着哄别人给你一个源代码.你若有动手能力,你就不怕出错,而用你自己的实践来提问(而不是在刚刚空白的状态下提问).解决方案三:新建一个解决方案,将这两个项目加至同一个解决方案,然后在你的主项目中引用其他项目,就可以直接调用其他项目的

急急急!在同时打开的两个项目中,窗体的相互调用问题

问题描述 现在我在一个调试环境中,同时打开两个工程,一个为1.vbp,一个为2.vbp,如何实现在1.vbp的窗体Form1里面调用2.vbp的窗体的方法呢?急等回复,一定加分! 解决方案 解决方案二:不是很懂,如果只想调试结果,放在一个工程里吧.解决方案三:不是不可能是很复杂,不如楼上说的放到一个工程里来,解决方案四:窗体的方法是Projected的,还得进行一下封装.Net支持直接引用另外的工程的dll,你只需要引入另外一个工程的命名空间,然后正常声明调用就行了解决方案五:3楼的前辈说明白一

ef-在项目中使用两个EF上下文

问题描述 在项目中使用两个EF上下文 项目中如何设计数据访问层实现操作两个数据库.求方法,希望可以吧,上下文的SaveChanges方法提到BLL中调用. 解决方案 映射两个edmx文件即可 调用时通过不同的dataContxt进行实例化数据库连接