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使用transition实现的鼠标悬停淡入淡出
Jan 09 HTML / CSS
网页切图的CSS和布局经验与要点
Apr 09 HTML / CSS
纯css3使用vw和vh实现自适应的方法
Feb 09 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
Oct 26 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
May 03 HTML / CSS
HTML5 画布canvas使用方法
Mar 18 HTML / CSS
mui几种页面跳转方式对比总结概括
Aug 18 HTML / CSS
Html5百叶窗效果的示例代码
Dec 11 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
Jan 22 HTML / CSS
AmazeUI 列表的实现示例
Aug 17 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
css中z-index: 0和z-index: auto的区别
Aug 23 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
西德产收音机
2021/03/01 无线电
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
javascript中函数作为参数调用的方法
2015/02/09 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python实现图片拼接的代码
2018/07/02 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python简单实现9宫格图片实例
2020/09/03 Python
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
信息工程学院毕业生推荐信
2013/11/05 职场文书
教师求职信范文分享
2013/12/27 职场文书
大学生作弊检讨书
2014/02/19 职场文书
我的中国梦口号
2014/06/16 职场文书
领导干部对照检查材料
2014/08/24 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android
2022漫威和DC电影上映作品
2022/04/05 欧美动漫