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 简单又实用的5个属性
Mar 04 HTML / CSS
css3绘制天猫logo实现代码
Nov 06 HTML / CSS
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
Feb 04 HTML / CSS
CSS3中各种颜色属性的使用教程
May 17 HTML / CSS
css3 盒模型以及box-sizing属性全面了解
Sep 20 HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
Apr 02 HTML / CSS
css3利用transform变形结合事件完成扇形导航
Oct 26 HTML / CSS
html+css实现自定义图片上传按钮功能
Sep 04 HTML / CSS
HTML5微信播放全屏问题的解决方法
Mar 09 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
Aug 18 HTML / CSS
amazeui时间组件的实现示例
Aug 18 HTML / CSS
HTML+CSS 实现顶部导航栏菜单制作
Jun 03 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设计模式中单例模式的应用分析
2013/05/15 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
PyQt5实现简易计算器
2020/05/30 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
pip安装python库的方法总结
2019/08/02 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
如何通过python实现人脸识别验证
2020/01/17 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
女大学生自我鉴定
2013/12/09 职场文书
西式结婚主持词
2014/03/14 职场文书
投标担保书范文
2014/04/02 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Python IO文件管理的具体使用
2022/03/20 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS