HTML5 Canvas之测试浏览器是否支持Canvas的方法


Posted in HTML / CSS onJanuary 01, 2015

本文翻译自Steve Fulton & Jeff Fulton HTML5 Canvas, Chapter 1, “Testing to See Whether the Browser Supports Canvas”.

在获取HTML页面上Canvas元素的引用后,我们需要测试一下该元素是否包含“上下文”(context)。Canvas的上下文指的是由浏览器定义的用于绘画的平面。简单地说,如果上下文不存在的话,Canvas也就名存实亡了。测试浏览器是否支持Canvas有好几种方法。第一种方法是检查HTML页面中Canvas元素的getContext方法是否存在:

复制代码
代码如下:

if (!theCanvas || !theCanvas.getContext) {
return;
}

事实上,上述代码测试了两点:其一,测试了theCanvas是否为false(如果id不存在的话,document.getElementById()会返回false);其二,测试了getContext()函数是否存在。

在上述代码中,如果测试失败,那么return语句执行,程序终止。

另一种方法是创建一个专门用于判断Canvas是否得以支持的函数,而在该函数中,实时生成一个Canvas元素来进行这种判断 — 这种方法很流行,Mark Pilgrim在他的HTML5网站http://diveintohtml5.org中提到了这种方案:

复制代码
代码如下:

function canvasSupport() {
return !!document.createElement('canvas').getContext;
}
function canvasApp() {
if (!canvasSupport()) {
return;
}
}

我们最钟爱的方法是使用modernizr.js库(在http://www.modernizr.com中可以找到)。Modernizr是一个简单易用的轻量级JavaScript库,用于测试各种Web技术的兼容性 — 它提供了很多静态的Boolean方法,可以用来测试当前Canvas是否得到支持。

在HTML页面中引入modernizr很简单,从http://www.modernizr.com上下载代码,然后在HTML页面中包含这个外部js文件即可:

复制代码
代码如下:

<script src="modernizr-1.6.min.js"></script>

使用Modernizr测试Canvas的支持性,只需将上面的canvasSupport函数改动一下就可以了:
复制代码
代码如下:

function canvasSupport() {
return Modernizr.canvas;
}

我们认为,判断浏览器是否支持Canvas,使用Modernizr.js是最好的方案。
HTML / CSS 相关文章推荐
使用CSS3制作响应式导航菜单的方法
Jul 12 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
Apr 26 HTML / CSS
会走动的图形html5时钟示例
Apr 27 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
Jan 09 HTML / CSS
用canvas做一个DVD待机动画的实现代码
Apr 12 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
Apr 30 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
amazeui页面分析之登录页面的示例代码
Aug 25 HTML / CSS
CSS3 制作的悬停缩放特效
Apr 13 HTML / CSS
Css预编语言及区别详解
Apr 25 HTML / CSS
在HTML中引入CSS的几种方式介绍
Dec 06 HTML / CSS
HTML5 Canvas中绘制矩形实例
Jan 01 #HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
Jan 01 #HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
Jan 01 #HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
Dec 30 #HTML / CSS
html5实现完美兼容各大浏览器的播放器
Dec 26 #HTML / CSS
html5中 media(播放器)的api使用指南
Dec 26 #HTML / CSS
浅谈html5 响应式布局
Dec 24 #HTML / CSS
You might like
深入PHP autoload机制的详解
2013/06/09 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
python常规方法实现数组的全排列
2015/03/17 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python实现图片插入文字
2019/11/26 Python
python烟花效果的代码实例
2020/02/25 Python
pandas中ix的使用详细讲解
2020/03/09 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
创业资金计划书
2014/02/06 职场文书
抽奖活动主持词
2014/03/31 职场文书
库房保管员岗位职责
2014/04/07 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
大学生逃课检讨书
2015/05/04 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
解析目标检测之IoU
2021/06/26 Python