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背景_动力节点Java学院整理
Jul 11 HTML / CSS
利用css3-animation实现逐帧动画效果
Mar 10 HTML / CSS
关于css兼容性问题及一些常见问题汇总
May 03 HTML / CSS
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
Jan 06 HTML / CSS
css3实现背景模糊的三种方式(小结)
May 15 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
Nov 27 HTML / CSS
关于HTML5语义标签的实践(blog页面)
Jul 12 HTML / CSS
canvas实现手机的手势解锁的步骤详细
Mar 16 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
Aug 20 HTML / CSS
html解决浏览器记住密码输入框的问题
May 07 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/10/29 PHP
php数字游戏 计算24算法
2012/06/10 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js 如何实现对数据库的增删改查
2012/11/23 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
软件测试笔试题
2012/10/25 面试题
财务工作者先进事迹材料
2014/01/17 职场文书
优秀广告词大全
2014/03/19 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
食品安全主题班会
2015/08/13 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL