1.如何选择要使用的特性以及所面向的浏览器
2.哪些浏览器支持HTML5
3.如何检测是否支持HTML5
4.如何开发贷容错性的Web应用程序
5.CSS3媒体查询如何增强检测脚本
 
使用HTML5这类前沿预言时,可能会选择以下两种方案
一. 尽可能地靠拢新标准,忽略那些不支持的平台
二.不使用任何新技术,知道改标准被浏览器系统广泛支持。
现在我们要使用的是第三种方法:就是对新技术理智的取舍,并慎重处理兼容性问题,这样就能开发出对大多数用户都可靠且实用的Web应用程序。
 
有4种检测HTML5功能的基本方法:
一.在全局对象上检测属性
二.在创建的元素上检测属性
三.检测一个放法(Methed)能否得到正确的返回值
四.检测能否保留元素值
 
利用全局元素检测属性
所有HTML5文档都显示在一个全局元素中,通常将它称为navigator或window.
可以直接在这些全局属性上创建一些HTML5属性。在这种情况下,浏览器可以直接使用它们。
如下:
if (window.applicationCache) {
    document.write("yes,your borwser can use offline web application");
} else {
    document.write("No,your borwser cannot use offline web application");
}
如果浏览器支持离线Web,那你就可以正常使用它了,否则。。。。
 
利用创建的元素检测属性 
并非真正创建元素,你只是在浏览器内存中创建一个虚拟元素。它可以帮你完成检测,而并不会在浏览器中显示出来。
这也是必须进行的检测,因为可在DOM中加入任何元素,但当添加的元素无法被浏览器识别时,浏览器会为其添加标准全局属性,并且实质上会将其忽略。若改元素可被浏览器识别,浏览器才会为它添加专有属性。
例如:
if (document.createElement('canvas').getContext) {
    document.write('Yse,your borwser can use the canvas');
} else {
    document.write("No,your borwser cannot use the canvas");
}
 
检测方法能否返回正确的值
如下:
return !!document.createElement('video').canPlayType;
如果支持,接下来再检测H.264编解析器
!!video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')
 
写全为下:
function videoCheck() {
    retrun !!document.createElement('video').canPlayType;
}
function h264Check() {
   if ( !videoCheck ) {
         document.witet("not");
         return;
    }
    var video = document.createElement("video");
    if ( !video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')) {
          document.witet("not");
    }
    return;
}
 
检测元素是否保留值
检测元素是否保留相关的值是检测方法中最复杂的。首先需要创建一个虚拟元素,然后检测指定的方法,最后检测该方法的值是否按预期被保留。
如下:
var i = document.createElement("input");
i.setAttrbute("type", "range");
if ( i.type == "text" ) {
    document.write("not");
}
 
处理Ie7, Ie7, Ie6
<!-- [if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
加了这个虽然能然低版本Ie浏览器能够识别HTML5新标签,但它仍然不支持新标签的相应功能。
 
优雅降级:缘于系统在一个或多个组件错误时,应当仍继续运行。在Web开发中这意味着即使在HTML5组件无法被浏览器完全支持时Web页面仍然继续运行。
 
使用CSS媒体查询检测移动浏览器
<link media="screen" rel="stylesheet" href="style.css">
<style>
  @media print{
    //add style here
  }
</style>
CSS3扩充了媒体属性,这样用户可以在各种条件下检测用户代理。浏览器在满足条件的情况下可以输出对应的样式表。如下:
<link rel="stylesheet" media="screen and (max-width:128px)" href="small-srceen.css">
 
 

HTML5 移动开发(移动设备检测及对HTML5的支持)的更多相关文章

  1. 小强的HTML5移动开发之路(18)——HTML5地理定位

    来自:http://blog.csdn.net/dawanganban/article/details/18192091 在前面的<小强的HTML5移动开发之路(2)--HTML5的新特性> ...

  2. 小强的HTML5移动开发之路(13)——HTML5中的全局属性

    来自:http://blog.csdn.net/dawanganban/article/details/18179483 一.accssskey  快捷键 <!DOCTYPE HTML> ...

  3. 小强的HTML5移动开发之路(49)——HTML5开发神器HBuilder

    今天给大家介绍一款开发HTML5的神器--HBuilder. 下载地址:http://www.dcloud.net.cn/ 一.新建文件 可以看到支持web app开发和普通网站前端开发,我们首先建立 ...

  4. 小强的HTML5移动开发之路(3)——HTML5与HTML4比较

    来自:http://blog.csdn.net/dawanganban/article/details/17652873 在前面介绍了HTML5的新特性,新标签的使用,智能表单设计,引入多媒体对象,C ...

  5. 小强的HTML5移动开发之路(15)——HTML5中的音频

    浏览器虽然发展很快,但是浏览器中的标准还是不完善,在HTML4+CSS2+JS的前段开发中让很多程序员头疼的就是浏览器的兼容性问题,音频播放也一样,直到现在,仍然不存在一项网页上播放视频和音频的标准. ...

  6. 小强的HTML5移动开发之路(20)——HTML5 Web SQL Database

    来自:http://blog.csdn.net/dawanganban/article/details/18220761 一.Web Database介绍 WebSQL数据库API实际上不是HTML5 ...

  7. 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)

    来自:http://blog.csdn.net/dawanganban/article/details/18218701 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedO ...

  8. 小强的HTML5移动开发之路(17)——HTML5内联SVG

    来自:http://blog.csdn.net/dawanganban/article/details/18189181 一.什么是SVG 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集) ...

  9. 小强的HTML5移动开发之路(2)——HTML5的新特性

    来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...

随机推荐

  1. PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)

    如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...

  2. 20135337朱荟潼 Linux第七周学习总结——可执行程序的装载

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linu ...

  3. Photo Cleaner -- proposed by Wei Zhang

    Need想必大家都有用手机或相机记录生活的习惯吧!在旅途中,驴友们见到美丽的风景,往往激动地咔嚓一下拍张照记录下来.完事后发现角度不太好,于是又咔嚓一下……不知不觉中一下照了好多,然而真正需要的只是那 ...

  4. Beta版本冲刺(五)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  5. VS2013的安装与测试

    第一步:下载完成之后点击安装,在安装过程中会出现很多选择,选择社区版(c++),安装完成: 第二步:安装完成之后打开VS2013,如图所示:   第三步:按以下步骤进行 第四步:点击[OK]之后 第五 ...

  6. Citrix Merchandising Server 配置

    获取Citrix Merchandising Server虚拟镜像: 我们可以从Citrix官网上下载Citrix Merchandising Server(分为XenServer和vSphere), ...

  7. 继承自NSObject的不常用又很有用的函数(1)

    初始化阶段 —— load 和 initialize load函数 原型: +(void)load 当类被引用进程序的时候会执行这个函数. 在一个程序开始运行之前(在main函数开始执行之前),在库开 ...

  8. Nginx upstream 配置

    1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况.例如:u ...

  9. 【Mysql】根据时间去除重复数据

    SELECT a.project_id,a.user_id,a.app_version,a.src_system,a.channel,a.thedate FROM rpt_innoreport_luc ...

  10. Luogu5162 WD与积木(生成函数+多项式求逆)

    显然的做法是求出斯特林数,但没有什么优化空间. 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数.转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i, ...