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实现各种图形的示例代码
Oct 19 HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
Jan 09 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
Jul 02 HTML / CSS
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
Jan 31 HTML / CSS
html5新增的属性和废除的属性简要概述
Feb 20 HTML / CSS
使用html5 canvas创建太空游戏的示例
May 08 HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 HTML / CSS
HTML5拖拽API经典实例详解
Apr 20 HTML / CSS
CSS作用域(样式分割)的使用汇总
Nov 07 HTML / CSS
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
Nov 11 HTML / CSS
什么是css原子化,有什么用?
Apr 24 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调整服务器时间的方法
2015/04/03 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python中的exec、eval使用实例
2014/09/23 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python处理中文标点符号大集合
2018/05/14 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
基于Python绘制个人足迹地图
2020/06/01 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
python中reload重载实例用法
2020/12/15 Python
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
公务员个人自我评价分享
2013/11/06 职场文书
专升本个人自我评价
2013/12/22 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
法制教育主题班会
2015/08/13 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
Mysql如何查看是否使用到索引
2022/12/24 MySQL