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实现鼠标滑过鼠标点击代码写法
Dec 26 HTML / CSS
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
Jan 31 HTML / CSS
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
Feb 04 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
Jun 25 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
基于html5绘制圆形多角图案
Apr 21 HTML / CSS
深入剖析HTML5 内联框架iFrame
May 04 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
Dec 14 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
深入PHP FTP类的详解
2013/06/13 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
AngularJS表单验证功能
2017/10/19 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
python实现一次创建多级目录的方法
2015/05/15 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
基于Python实现简单学生管理系统
2020/07/24 Python
残疾人小组计划书
2014/04/27 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
个人作风建设心得体会
2014/10/22 职场文书
余世维讲座观后感
2015/06/11 职场文书
纪律委员竞选稿
2015/11/19 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL