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中border-radius属性设定圆角的使用技巧
May 10 HTML / CSS
详解如何在css3打包后自动追加前缀插件:autoprefixer
Dec 18 HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 HTML / CSS
HTML高亮关键字的实现代码
Oct 22 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
Jan 09 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
Dec 11 HTML / CSS
浅析移动设备HTML5页面布局
Dec 01 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
Mar 22 HTML / CSS
深入理解HTML的FormData对象
May 17 HTML / CSS
Html5实现文件异步上传功能
May 19 HTML / CSS
Html5百叶窗效果的示例代码
Dec 11 HTML / CSS
HTML5图片层叠的实现示例
Jul 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
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php正则表达式学习笔记
2015/11/13 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
程序集与命名空间有什么不同
2014/07/25 面试题
文明学生事迹材料
2014/01/29 职场文书
打架检讨书300字
2014/02/02 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
校庆标语集锦
2014/06/25 职场文书
学生安全责任书模板
2014/07/25 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
敬老月活动总结
2014/08/28 职场文书
亮剑观后感500字
2015/06/05 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python