在获取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文件即可:

复制代码

代码如下:

使用Modernizr测试Canvas的支持性,只需将上面的canvasSupport函数改动一下就可以了:

复制代码

代码如下:

function canvasSupport() {

return Modernizr.canvas;

}

我们认为,判断浏览器是否支持Canvas,使用Modernizr.js是最好的方案。

html 判断页面支持canvas,HTML5 Canvas之测试浏览器是否支持Canvas的方法相关推荐

  1. HTML5中如何检查浏览器是否支持本地存储

    如果你的浏览器支持该特性的话,那么全局对象:window上会有一个localStorage的属性,反之,你的浏览器不支持的话,那么该属性值为undefined JavaScript  function ...

  2. win10edge启用html5,Win 10 Edge浏览器极速运行的设置方法

    Win 10 Edge浏览器怎么才能更快浏览网页?已经升级到Win10正式版的用户可能最近使用Edge浏览器比较多,这款浏览器相对而言比较轻便,很多时候速度也比较快.但是偶尔也会出现比较卡的情况.就算 ...

  3. 一键代理浏览器_支持IPv6的防关联指纹浏览器 VMLogin 支持模拟电脑名称、支持修改MAC地址、支持模拟真人输入、支持自定义经纬度...

    VMLogin防关联指纹纹浏览器:用于亚马逊测评.FACEBOOK广告投放等多平台多账号批量注册多登防关联管理软件.用虚拟浏览器配置文件代替若干电脑,具有浏览器指纹防护功能,每个浏览器文件的Cooki ...

  4. html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)

    HTML头部标记 标记 描述 HTML5标准 定义页面中所有链接的基准URL 设定显示在浏览器左上方的标题内容 表明该文档是一个可用于检索的网关脚本 不支持 文档本身的元信息,例如查询关键词,有效期等 ...

  5. HTML5 浏览器支持(怎么样让低版本浏览器支持html5?)

    你可以让一些较早的浏览器(不支持HTML5)支持 HTML5. 现代的浏览器都支持 HTML5. 此外,所有浏览器,包括旧的和最新的,对无法识别的元素会作为内联元素自动处理. 正因为如此,你可以 &q ...

  6. 浏览器html5视频抓取,检测浏览器是否支持html5视频的代码

    复制代码 代码如下: 函数checkVideo(){if(!!document.createElement('video').canPlayType){varvidTest=document.crea ...

  7. (一)检测浏览器是否支持websocket

    二.创建一个支持 WebSocket 的服务 1.从pywebsocket下载mod_pywebsocket(亲git clone),地址在这里啦~,这里请注意,mod_pywebsocket需要py ...

  8. IE7及以下浏览器不支持json的解决方法

    在页面 alert(JSON);//大写 IE7及以下浏览器不支持json所以不会弹出object 解决方法打开json.org json的官网找到javascript的json2.js然后会转到gi ...

  9. websocket测试工具,支持ws wss客户端

    websocket测试工具,支持ws wss客户端 websocket测试工具,支持ws wss客户端 程序界面 测试效果 程序说明 使用说明 使用注意 开发环境 测试环境 程序版本 源文章出处 下载 ...

最新文章

  1. n!mod p 的求法 数学
  2. No module named 'pandads'
  3. 阿里云RPA专有云产品文档集合
  4. 安卓模拟器安装过程记录 20200926
  5. react前端显示图片_在 React 中使用 SVG 图标组件
  6. fatal error C1010
  7. python __set__ __get___python __get__ __set__
  8. 如何在Azure Data Studio中导出数据库?
  9. 电脑网速,详细教您电脑网速慢怎么办
  10. 罗技键盘鼠标接收器丢了 怎么连接别的接收器
  11. 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!...
  12. 为了苦苦寻觅视频素材的你,我们整理了 9 个版权视频网站
  13. 如何给女朋友解释为什么200M宽带,打王者荣耀还是会有460ms的延迟?
  14. 吉林大学算法设计与分析考前突击
  15. Android App加载图片内存空间计算
  16. 计算机毕业设计(附源码)python语言学习系统
  17. SCSS常用语法总结
  18. Java Json和yaml转换
  19. 关于目标与执行力的思考
  20. 记一次基于强化学习的有向图搜索

热门文章

  1. Matplotlib实例教程(二)饼状图
  2. Python入门100题 | 第080题
  3. python3-matplotlib库简单入门
  4. mysql数据库DDL操作
  5. HJ9 提取不重复的整数
  6. day20 函数闭包与装饰器
  7. java.lang.Long cannot be cast to java.lang.Integer解决办法
  8. 事务策略: 了解事务陷阱--转
  9. 若依JAVA开源框架自动生成代码步骤记录-创建子module以及导入子module相关问题
  10. 阿里高级算法专家公开10大思考