移动web开发介绍——浏览器
前段时间了解学习了一下《移动Web手册》,觉得真的需要这种不是偏向技术、框架或工具的书籍,只是单纯的讲解一些关于移动Web最基本的知识。正好今天整理一部分之前学习过的内容,记录和分享,也方便以后查阅理解。
我们在开发移动端web时,经常跟浏览器打交道,你知道移动端的浏览器有几种类型吗?在测试移动web页面时,我们不能忽略的浏览器又有哪些呢?
在开始之前,我们先简单了解一下移动Web
一、移动Web是什么
1. 移动web和桌面web没有本质的区别,尤其是考虑到 响应式设计 的技术运行我们在大的电脑显示器和小的手机屏幕上使用同一套CSS,我们可以把它理解为“运行在比你听说过的还要多的浏览器上的支持小型触摸屏的网站”
2. 但是移动web开发和桌面开发有些小小的区别,例如
- 如何适配不同大小的屏幕
- 如何兼容安卓的众多版本
- 为什么有些css属性在手机上不生效
- 手机上click事件有延迟
而上面的这些问题,是我们在移动开发中主要关注的话题,这些话题主要分为三类,它们是:
- 浏览器
- 视口
- 事件
先不要着急一口气去了解和解决上面的问题(实际上,移动端web开发的问题可能是变幻莫测的,就浏览器而言,不同的厂商,不同的品牌手机,不同的操作系统,不同的内置浏览器,甚至同一种浏览器的不同版本都有可能对于移动端的某一些样式或事件的支持不同。)本篇不介绍技术,着重介绍的是关于影响移动web开发的环境因素。先了解一下移动世界,这可能会对你进行web开发有所助益。
二、移动端浏览器
浏览器类型
手机上有4种浏览器类型:内置浏览器、可下载浏览器、代理浏览器以及WebView。这些浏览器在某些地方会重叠:一个浏览器不一定非要属于一个类型。 比如:代理浏览器Opera Mini 被很多用户下载,但是在某些功能手机上却是内置浏览器。
下面分别说一下不同的类型浏览器
1.内置浏览器
每部手机都有内置浏览器,也就是说,这个浏览器属于固件,通常是操作系统厂商开发的,一般随着系统升级而升级。下表列举了不同平台手机的内置浏览器:
大多数内置浏览器都被紧紧密集成到底层的操作系统中,也就是说,无法单独升级浏览器。
2. 可下载浏览器
许多浏览器是用户能够下载并且自行安装的。Opera、Firefox、Chrome还有UC,是其中几个重要的浏览器。
在实践中,只有安卓才可能有可下载的浏览器,因为iOS上不允许安装其他的渲染引擎。
可下载浏览器相比于内置浏览器有一个优势,就是只要有了新版本就可以更新。
3. WebView
WebView是留给原生应用的一个操作系统浏览接口。比如,一个游戏的帮助页面可能是网页,游戏应用会利用平台的WebView来展示页面。
苹果不允许iOS设备上安装其他渲染引擎。因此,其他浏览器想要在iOS上安装就必须用苹果的WebView。
4. 代理浏览器
代理浏览器的渲染引擎能够解析和执行HTML、CSS还有JavaScript,但并不是运行在设备上,而是在远程服务器上。
与代理浏览器相对应的是完备浏览器。当用户请求一个页面,浏览器会通过http请求去抓取HTML、CSS、JavaScript还有一些其他资源,一旦一切就绪,就会去渲染和显示页面。这些步骤都是在客户端上进行的,会占用内存、处理器时间和电池寿命。
代理浏览器渲染页面步骤:
(1). 用户请求一个页面不会发送普通的http请求,而是通过一个加密连接发送一个特殊的请求到一个特殊的代理服务器。
(2). 代理服务器会发送正常的http请求给用户希望访问的web服务器,它会请求HTML和其它资源。
(3). 代理服务器包含一个渲染引擎,能够正常渲染页面
(4). 代理服务器压缩渲染页面,成为该网站的某种图片(想象为一个pdf或者一个图像映射)
(5). 代理服务器通过加密连接把这个文件发送到客户端
(6). 客户端把文件展示给用户
代理浏览器优缺点:
优点:致力于为用户省钱。因为代理浏览器所要做的事情就是显示静态文件,允许点击或轻触链接,生成简单UI,所以它是轻量级的,甚至可以跑在低规格的手机上,用户不需要买很贵的智能机就可以访问网页。
缺点:没有客户端交互。任何时候当代理浏览器遇到任何动态的事件时,它就必须的去请求服务器给出新的指示。因此,在触发和执行之间往往会有一秒或者更长事件的滞后 大多数不允许做某些事件,onscroll、resize、mouseout等
三、安卓平台下的浏览器
先说明一下,这里没有介绍iOS下的浏览器,是因为iOS下的浏览器相对安卓而言不混乱。之前也提到过,苹果不允许安装其他渲染引擎。不过基于代理浏览器的特性,苹果上可以安装代理浏览器(但也不是所有代理浏览器都可以)。所以在苹果手机上测试web页面时,我们一般测试Safari浏览器即可,必要时可以测试代理浏览器。
下面来说一下安卓
Web开发者在面对安卓时遇到的问题是,不像其它平台,安卓的内置浏览器的情况很复杂,受到多方面因素的影响,正如前面所提到的,就浏览器而言,不同的厂商,不同的品牌手机,不同的操作系统,不同的内置浏览器,甚至同一种浏览器的不同版本都有可能对于移动端的某一些样式或事件的支持不同。而安卓平台的开放性,让更多的手机厂商,浏览器厂商都可以开发自己的一个浏览器来增加设备或操作平台的价值。这也就造就了安卓市场下的各浏览器的繁复和差异化。(例如,两个不同手机厂商的内置浏览器在针对同一个web样式上做了不同优化处理)
安卓浏览器
1. 安卓Webkit
一个智能手机操作系统需要一个浏览器,因此原始的安卓提供了他自己基于Webkit的浏览器,它没有名字,我们称它为“安卓WebKit”(内置浏览器)。
2. Chrome
基于WebKit的浏览器,谷歌想使用chrome来代替webkit。利于谷歌收集用户数据并提供更强大的广告。但是设备厂商更希望能够自己获取数据,并且是自己的设备与众不同
3. 三星Chrome和其它浏览器
与Google Chrome是不一样的。(版本和一些样式支持的区别)
三个必须测试的浏览器
(1). 安卓WebKit4(富含不同的设备和不同版本的安卓系统)
(2). GoogleChrome
(3). 三星Chrome(三星高端手机)
注:检测用户代理字符串(navigator.userAgent),查看是否包含单词chrome,如果有就是Chrome(不一定是GoogleChrome);如果不包含,就是安卓WebKit。
之前做的PPT的一个知识分享,现在又重新整理了一下,主要是为了记录和重温,不是很详细,还是希望可以帮助感兴趣的童鞋对移动端的一些知识有所了解。
感谢阅读。
移动web开发介绍——浏览器的更多相关文章
- Java Web开发介绍
转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 Java很好地支持web开发,在桌面上Eclipse RC ...
- Springboot学习:Web开发介绍
简介 使用SpringBoot: 1).创建SpringBoot应用,选中我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自 ...
- Web开发,浏览器通讯原理及流程那点事,你应该听说下
题外话: 最近园子里,关于.net门槛的文章风风火火,不过这类事情每过段时间就会出来一次,所以酱油都懒的打了. 当然个人也是有想法的,特别是这两天碰巧和一个三四年经验的java开发者呆在一起,对方说. ...
- WEB开发兼容性---浏览器渲染模式—— document.compatMode
document.compatMode主要是用来判断浏览器采用何种方式渲染,它有两种可能的返回值:BackCompat和CSS1Compat,官方对其解释如下: BackCompat:标准兼容模式关闭 ...
- web开发中浏览器跨域问题
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...
- Web开发初探(系统理解Web知识点)
一.Web开发介绍 我们看到的网页通过代码来实现的 ,这些代码由浏览器解释并渲染成你看到的丰富多彩的页面效果. 这个浏览器就相当于Python的解释器,专门负责解释和执行(渲染)网页代码. 写网页的代 ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...
- Web项目开发介绍及实战项目介绍
引言 本系列课程我们将学些Golang语言中的Web开发框架Iris的相关知识和用法.通过本系列视频课程,大家能够从零到一经历一个完整项目的开发,并在课程中了解实战项目开发的流程和项目设涉及的各个模块 ...
- 在 Web 开发中,img 标签用来呈现图片,而且一般来说,浏览器是会对这些图片进行缓存的。
在 Web 开发中,img 标签用来呈现图片,而且一般来说,浏览器是会对这些图片进行缓存的. 比如访问百度,我们可以发现,图片.脚本这种都是从缓存(内存缓存/磁盘缓存)中加载的,而不是再去访问一次百度 ...
随机推荐
- 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题
项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...
- 轻松自动化---selenium-webdriver(python) (七)
本节知识点: 多层框架或窗口的定位: switch_to_frame() switch_to_window() 智能等待: implicitly_wait() 对于一个现代的web应用,经常会出现框架 ...
- AngularJS in Action读书笔记4(实战篇)——创建Statistic模块
个人感觉<Angularjs in action>这本书写的很好,很流畅,循序渐进,深入浅出,关键是结合了一个托管于Github上的实例讲解的,有代码可查,对于初学者应该是个不错的途径.( ...
- 借助 CSS Colorguard 来避免使用重复的颜色
每一个 CSS 项目开始时愿望都是很美好的,但不可避免地,多人协作的项目相互之间可能重复使用了相似的颜色,而你从来不知道它们的存在.CSS Colorguard 帮助您保持您想要的颜色设置,当你添加的 ...
- 【Java基础】方法
Num1:检查参数的有效性 绝大多数的方法和构造器对于传递给它们的参数值都会有某些限制.比如:索引值必须是非负数,对象引用不能为null等等.这些都很常见,你应该在文档中清楚地指明所有这些限制,并在方 ...
- 11款扁平化设计的 Twitter Bootstrap 主题和模板
扁平化设计和 Bootstrap 框架是2013年网页设计领域的两大设计潮流.把这两者集合起来不是件容易的事情,使用下面这些主题和模板将节省我们的开发时间,因为我们可以修改已有的基础代码,而不是从零开 ...
- 通过自定义相册来介绍photo library的使用
因为我在模仿美图秀秀的功能,在使用相册时候,UIImagePickerController本来就是一个UINavigationController的子类,所以没有办法使用push,所以做了一个自定义的 ...
- [AngularJS] AngularJS系列(2) 中级篇之路由
目录 原理 angular-route ui-router 事件 深度路由 原理 ng的route本质是监听hashchange事件. 在angular-route中 $rootScope.$on(' ...
- C#--静态函数成员
- HoverTree开源项目已经实现管理员登录
ASP.NET开源项目HoverTree已经实现了管理员登录功能,最新代码请到以下网址查看.http://hovertree.com/down/ 点击Clone右边的Download就可以下载最新开发 ...