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实现的动画加载导航
Oct 08 HTML / CSS
一款恶搞头像特效的制作过程 利用css3和jquery
Nov 21 HTML / CSS
全方位了解CSS3的Regions扩展
Aug 07 HTML / CSS
CSS3对背景图片的裁剪及尺寸和位置的设定方法
Mar 07 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
Mar 17 HTML / CSS
html5组织文档结构_动力节点Java学院整理
Jul 11 HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
Jun 03 HTML / CSS
html5的新玩法——语音搜索
Jan 03 HTML / CSS
HTML5的一个显示电池状态的API简介
Jun 18 HTML / CSS
HTML5 拖放功能实现代码
Jul 14 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
Aug 06 HTML / CSS
基于HTML十秒做出淘宝页面
Oct 24 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的header和asp中的redirect比较
2006/10/09 PHP
PHP 常用函数库和一些实用小技巧
2009/01/01 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
在Python的Django框架中创建和使用模版
2015/07/15 Python
详解python中的json和字典dict
2018/06/22 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python OS模块实例详解
2019/04/15 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
Python @property及getter setter原理详解
2020/03/31 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
自主招生教师推荐信
2014/05/10 职场文书
教师党员承诺书2015
2015/01/21 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技