0

0

HTML5 API浏览器支持情况检测的详情介绍

黄舟

黄舟

发布时间:2017-03-25 16:18:09

|

1974人浏览过

|

来源于php中文网

原创

html5发展到现在,虽说没有大规模的普及,但在我们日常生活中,也很容易见到了,html5的游戏、网站、应用也是层出不穷。而作为前端人员,也应该多了解这些api为以后应用打基础,下面我将给大家介绍 html5 新引入的api,并附上各个 api 的浏览器检测方法,我主要参考了最近看的《html5揭秘》和《html5高级程序设计》。

首先,我们先介绍下 Modernizr, 它是一个用来检测浏览器对 HTML5 和 CSS3 特性支持情况的开源 Javascript 类库,现在最新的是 2.5.3 版(下载),使用方法很简单,在页面里引入 JS 后,它会自动运行,并创建一个 Modernizr 全局对象,它为每一个可以检测的特性都创建了一个对应的布尔类型属性,我们只要去调用就行了,例如:

if( Modernizr.canvas ){  
// 恩,我知道这个属性,他是画图用的:)
}
else{  
// canvas 这是个什么东东??
}

1.Canvas
Canvas是依赖分辨率的位图画布,其绘制的图形是不可缩放的,你可以通过 Javascript 在 Canvas 上面绘制任何图形,甚至加载照片,HTML5标准制定了一系列 Canvas API,用于绘制简单的图形、定义路径、创建渐变及应用图像变换等 。一个 Canvas 就是一个矩形区域,默认情况下宽 300 像素,高 150 像素。
注意:Canvas绘制出来的对象不属于页面 DOM 结构或其他任何的命名空间

// 创建一个 Canvas 元素,并检查该元素是否拥有 getContext() 方法,然后用双否定强制返回一个布尔值
var hasCanvas = !!document.createElement("canvas").getContext;
// Modernizr检测方法,返回布尔值
var hasCanvas = Modernizr.canvas ;

2.Audio 和 Video
这两个元素的出现,让开发人员不必使用插件就可以播放音频或视频,HTML5规范还提供了通用的、完整的、可脚本化控制的API。

// 创建一个 Audio 元素,并检查该元素是否拥有 canPlayType() 方法,然后用双否定强制返回一个布尔值
var hasAudio = !!document.createElement("audio").canPlayType;
// modernizr检测方法
var hasAudio = Modernizr.audio;
// 创建一个 Video 元素,并检查该元素是否拥有 canPlayType() 方法,然后用双否定强制返回一个布尔值
var hasVideo = !!document.createElement("video").canPlayType;
// modernizr检测方法
var hasVideo = Modernizr.video;

想检测是否支持默写格式,可以这么写:

立即学习前端免费学习笔记(深入)”;

var hasVideo = document.createElement("video").canPlayType('video/ogg; codecs="theora, vorbis"');
// modernizr检测方法
var hasVideo = Modernizr.video.ogg;

原生方法会返回 “probably”,”maybe” 或 “”,分别代表 “完全有把握播放此格式”,”有可能可以播放此格式”,”确定无法播放此格式”。
canPlayType() 方法传入的参数用文字表达就是在问浏览器,能否播放封装在 ogg 容器内的 “theora” 编码格式的视频和 “vorbis” 格式的音频。

3.Web Storage
Web Storage (也称 DOMStorage)允许开发者把数据存储在 Javascript 对象中,对象在页面加载时保存,并且容易获取。在打开新窗口或新标签页以及重新启动浏览器时,开发人员可以选择是否激活这些数据。存储的数据不会再网络上传输,并可以保存高达数兆字节的大数据。

// 支持的话,全局 window 对象会有一个 localStorage 属性
var hasWebStorage = window.localStorage;
// modernizr检测方法
var hasWebStorage = Modernizr.localstorage;

4.Web Workers
Web Workers 可以让 Web 应用程序具备后台处理能力,它对多线程的支持非常好。因此,使用了 HTML5 的 Javascript 应用程序可以充分利用多核 CPU 带来的优势,把耗时长的任务分配给 Web Workers 去执行。
注意:在 Web Workers 中执行的脚步无法访问该页面的 window 对象。

造梦阁AI
造梦阁AI

AI小说推文一键成片,你的故事值得被看见

下载
// 支持的话,全局 window 对象会有一个 Worker 属性
var hasWorker = window.Worker;
// modernizr检测方法
var hasWorker = Modernizr.webworkers;

5.Offline Web Applications
HTML5 的离线应用缓存使得在无网络连接状态下运行应用程序成为可能。在第一次访问具备离线访问功能的 Web 站点时,Web服务器会告诉浏览器哪些文件时保证离线正常工作所必需的,这些文件可以使任意的文件——HTML、Javascript、图片或是视频。

// 支持的话,全局 window 对象会有一个 applicationCache 属性
var hasApplicationCache = window.applicationCache;
// modernizr检测方法
var hasApplicationCache = Modernizr.applicationcache ;

6.Geolocation
HTML5 的地理定位 API 能够定位出你在世界的什么地方,并在允许的情况下把该位置信息共享出去。这个神奇的功能可以构建出许多有趣的应用程序。比如计算跑步的路程,基于 GPS 导航的社交应用等等。它通过 IP 地址、GPS地理定位、Wi-Fi地理定位、手机地理定位、自定义地理定位获取定位数据。

// 支持的话,全局 navigator 对象会有一个 geolocation 属性
var hasGeolocation = navigator.geolocation;
// modernizr检测方法
var hasGeolocation = Modernizr.geolocation;

7.Forms
HTML5 中定义了很多新的输入框类型:表示搜索的 search、数字类型输入框 number、范围选择滑块 range、颜色选择器 color、电话号码输入框 tel、网址输入框 url、邮件输入框 email、日期选择器 date、月份输入框 month、星期输入框 week、时间戳输入框 time、精确表示日期/时间戳出入框 datetime、当地日期和时间输入框 datetime-local。

// 创建一个 input 元素,该元素默认是 text 类型,改变他的类型,然后查看改变是否被保留
var o = document.createElement("input");o.setAttribute("type","color");return i.type != "text";
// modernizr检测方法
var hasInputType = Modernizr.inputtypes.color;

8.WebSockets
WebSockets 是 HTML5 中最强大的通信功能,它定义了一个全双工通信通道(又称为双向同时通信,即通信的双方可以同时发送和接受信息的信息交互方式),仅通过 Web 上的一个 Socket 即可进行通信。它不仅仅是对常规 HTTP 通信的另一种增量加强,更代表着一次巨大的进步,对实时的、事件api0的程序而言更是如此。

// 支持的话,全局 window 对象会有一个 webSocket 属性
var hasWebSocket = window.webSocket;
// modernizr检测方法
var hasWebSocket = Modernizr.websockets;

8.Communication
Communication 是 HTML5 中用来实现正在运行的两个页面之间(iframe、标签页、窗口)进行跨源通信和信息共享的API。它把 postMessage API 定义为api1的标准方式。

// 支持的话,全局 window 对象会有一个 postMessage 属性
var hasPostMessage = window.postMessage;
// modernizr检测方法
var hasPostMessage = Modernizr.postmessage;

API 的浏览器支持情况主要介绍这些,以后我会逐个 API 进行详细讲解,把自己学到和研究的东西共享出来,欢迎大家来一块交流学习:)

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

6

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

37

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

51

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

8

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.7万人学习

HTML+CSS基础与实战
HTML+CSS基础与实战

共132课时 | 9.5万人学习

前端开发(基础+实战项目合集)
前端开发(基础+实战项目合集)

共60课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号