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 相关文章推荐
css动画效果之animation的常用样式
Mar 09 HTML / CSS
CSS3模块的目前的状况分析
Feb 24 HTML / CSS
关于CSS Tooltips(鼠标经过时显示)的效果
Apr 10 HTML / CSS
css3实现图片遮罩效果鼠标hover以后出现文字
Nov 05 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
Jan 06 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
Jan 07 HTML / CSS
html5 自定义播放器核心代码
Dec 20 HTML / CSS
canvas离屏技术与放大镜实现代码示例
Aug 31 HTML / CSS
canvas绘制树形结构可视图形的实现
Apr 03 HTML / CSS
AmazeUI 折叠面板的实现代码
Aug 17 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
Mysql的常用命令
2006/10/09 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
PHP 无限级分类
2017/05/04 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
微信小程序 火车票查询实例讲解
2016/10/17 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
基于node.js实现微信支付退款功能
2017/12/19 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
浅谈numpy数组的几种排序方式
2017/12/15 Python
python验证码识别实例代码
2018/02/03 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
python连接mysql有哪些方法
2020/06/24 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
监理资料员岗位职责
2014/01/03 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
优秀新员工事迹材料
2019/05/13 职场文书