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中简写属性要注意TRouBLe的顺序问题(避免踩坑)
Mar 09 HTML / CSS
使用css3实现超炫的loading加载动画效果
May 07 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
Feb 28 HTML / CSS
HTML5 Canvas入门学习教程
Mar 17 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 HTML / CSS
html5 input输入实时检测以及延时优化
Jul 18 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
Aug 23 HTML / CSS
使用Html5中的cavas画一面国旗
Sep 25 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
如何通过 CSS 写出火焰效果
Mar 24 HTML / CSS
flex布局中使用flex-wrap实现换行的项目实践
Jun 21 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面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
浅谈javascript的调试
2015/01/28 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
解决python爬虫中有中文的url问题
2018/05/11 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
学习和使用python的13个理由
2019/07/30 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
Internal修饰符有什么含义
2013/07/10 面试题
房地产开发计划书
2014/01/10 职场文书
高中学生期末评语
2014/04/25 职场文书
总经理检讨书范文
2015/02/16 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
python 远程执行命令的详细代码
2022/02/15 Python