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中Animation动画属性用法详解
Jul 04 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
Aug 14 HTML / CSS
css3实现冲击波效果的示例代码
Jan 11 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
Nov 16 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
Aug 07 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
Jan 29 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
Jun 13 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
详解Canvas 跨域脱坑实践
Nov 07 HTML / CSS
AmazeUI 面板的实现示例
Aug 17 HTML / CSS
分享CSS盒子模型隐藏的几种方式
Feb 28 HTML / CSS
css中:last-child不生效的解决方法
Aug 05 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开发过程中常用函数收藏
2009/12/14 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
Python中的函数作用域
2018/05/07 Python
python语音识别实践之百度语音API
2018/08/30 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python导入pandas具体步骤方法
2019/06/23 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
Python字典dict常用方法函数实例
2020/11/09 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
大学校运会广播稿
2014/02/03 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
六一亲子活动感想
2015/08/07 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js