admin 管理员组

文章数量: 887021


2023年12月17日发(作者:未初始化的局部变量)

HTML5中国:

检测浏览器支持哪些HTML5新特性的方法

HTML5不能说是一个全新的事物,但是大部分人对HTML5的了解还是比较少的。(如果你想了解HTML5的话,不妨查看IE9发布的HTML5视频。) 虽然目前新版的主流浏览器,诸如IE9、Firefox4、Chrome10都已经开始支持HTML5特性了,但是目前所有浏览器对HTML5的支持事不 完整的,主要是因为HTML5还处在制定过程中。如果你想检测你的浏览器究竟支持 HTML 5 的哪些特性,可以查看下面我们介绍的一种方法。

当 浏览器渲染 web 页面的时候,它会构造一个文档对象模型(Document Object Model,DOM)。这是一组用于表现页面上 HTML 元素的对象。每一个元素,例如每一个

,每一个

,每一个 都有不同的 DOM 对象表示。当然,也有一种全局的对象,例如

window 和 document,不过它们不是用来表示特定元素的。

所有的 DOM 对象都有一些通用属性,也有其自己特有的属性。支持 HTML 5 特性的浏览器就会包含这种独一无二的属性。因此,我们利用这种技术,就可以检测浏览器究竟支持哪些新特性。在本节的后面的部分中,我们将从易到难地详细介绍这种技术。

Modernizr —— HTML 5 检测库

Modernizr 是一个开源的,基于 MIT 协议的 JavaScript HTML 5特性检测库。它能够检测很多 HTML 5 和 CSS 3 的特性。你可以在其主页或者这里的地址(,注意修改后缀名)中找到最新版本(当前最新版本是 1.7)。同别的 JS 库一样,你应该在 head 块中将其引入:

Dive Into HTML5

Modernizr 会自动运行,不需要调用类似 modernizr_init() 的函数。一旦开始运行,它就会创建一个名叫 Modernizr 的全局变量。这个全局变量包含它能够检测到的新特性的布尔值。例如,如果你的浏览器支持 canvas API,那么 就会是 true;如果不支持则是 false。

if () {

// let’s draw some shapes!

} else {

// no native canvas support available

HTML5中国:

}

canvas

HTML 5 定义了 元素。这是一个“设备独立的位图画布,可以用于渲染图表、游戏图像或者其他可视图像”。在页面上 canvas 是一块矩形区域,你可以使用 javascript 语句在上面进行绘制。HTML 5 定义了一系列绘制函数(canvas API),用于绘制形状、定义路径、创建渐变或者应用变形等。

我们可以使用上面的 js 库检测 canvas API。如果你的浏览器支持 canvas API,DOM 对象就可以创建一个含有 getContext() 函数的 元素;如果不支持则仅仅会创建一个最原始的 元素,其中不包含任何 canvas 所特有的属性(记得这是 HTML 5 向后兼容的一种体现)。于是,我们利用这个特性,就可以按照如下的方法检测 canvas 特性

function supports_canvas() {

return !!Element(’canvas’).getContext;

}

这个函数将创建一个临时的 元素,但并不会将其显示到你的页面上,所以没有人会看到它。这个元素仅仅存在于内存中,哪里也不会去,什么也做不了,就像是静止的河流上面漂着的独木舟。

createElement(‘canvas’) 语句就是用来创建这个对象的。然后,我们测试能不能调用

getContext() 函数。这个函数仅在支持 canvas API 的浏览器中才能使用。最后,我们用两个取非运算符 !! 将 getContext() 函数的返回值转换成 Boolean 值。

这个 函数可以用来检测是否支持大多数 canvas API,包括形状、路径、渐变和填充等。它不会检测到任何在IE9 之前版本的 IE 上的模拟库(由于 IE9 才能够支持 canvas API,在早于 IE9 的版本上有很多第三方库来在 IE 上模拟 canvas)。

如果你不愿意自己写函数,当然也可以使用 Modernizr 来检测 canvas API。

if () {

// let’s draw some shapes!

} else {

// no native canvas support available

}

注意,这种检测仅仅用来检测形状、路径、渐变和填充等,如果要检测是否支持文本渲染,我们需要另外的方法。

canvas text

即使浏览器支持 canvas API,它也不一定支持 canvas text API。canvas text API 直到很晚的时候才被加入 HTML5,因此有些浏览器实际是在 canvas text API 完成之前就已经支持 canvas

API。

当 然,我们可以使用前面说的技术检测 canvas text API。前面说过,如果浏览器支持 canvas

API,那么就可以创建一个表示 元素的DOM 对象,并且能够调用 getContext() 函数;如果

HTML5中国:

不支持,则会创建一个没有任何特殊属性的普通 DOM 对象。下面我们在此基础之上来检测 canvas text API。

function supports_canvas_text() {

if (!supports_canvas()) {

return false;

}

var dummy_canvas = Element(’canvas’);

var context = dummy_text(’2d’);

return typeof xt == ‘function’;

}

这 个函数首先调用我们前面说过的 supports_canvas() 函数,来检测是否支持 canvas API。如果浏览器连 canvas API 都不支持,更不用谈 canvas text API 了!然后,我们创建一个临时的 元素,获取其 context。这段代码一定是可以工作的,因为我们已经使用

supports_canvas() 判断过了。最后,我们检查是否存在 fillText() 函数。如果存在,则支持

canvas text API。

如果不想自己写代码,那么就使用 Modernizr 吧!

if (text) {

// let’s draw some text!

} else {

// no native canvas text support available

}

更多详情可访问html5中国:


本文标签: 检测 支持 创建 元素 对象

更多相关文章

XX市XX区市场监督管理局执法数字化升级项目采购需求

9月前

XX市XX区市场监督管理局执法数字化升级项目采购需求

关于XenServer 6.0 GPU Passthrough使用注意事项

8月前

关于XenServer 6.0 GPU Passthrough使用注意事项

思杰Citrix 服务器虚拟化技术指标

8月前

思杰Citrix 服务器虚拟化技术指标

通用中端存储技术招标参数

8月前

通用中端存储技术招标参数

zabbix fping批量监控用法

8月前

zabbix fping批量监控用法

服务器监控工具ZabbixPrometheus和Grafana的选择与使用

8月前

服务器监控工具ZabbixPrometheus和Grafana的选择与使用

软硬件一体化备份系统要求

8月前

软硬件一体化备份系统要求

DELLR420+R720服务器raid+驱动安装教程

8月前

DELLR420+R720服务器raid+驱动安装教程

ibm b24 光纤交换机详细参数

8月前

ibm b24 光纤交换机详细参数

威联通 NAS 服务器邮件服务器用户指南说明书

8月前

威联通 NAS 服务器邮件服务器用户指南说明书

谈谈关于NVMe和NVMe-oF的那些事

8月前

谈谈关于NVMe和NVMe-oF的那些事

数据告诉你旗舰级NVMe M.2 SSD到底有多快

8月前

数据告诉你旗舰级NVMe M.2 SSD到底有多快

固态硬盘接口分类及特点分析

8月前

固态硬盘接口分类及特点分析

VMware ESXi5.5不识别Intel I350-T4网卡的解决办法

8月前

VMware ESXi5.5不识别Intel I350-T4网卡的解决办法

Effective第三版 中英 | 第二章 创建和销毁对象 | 避免创建不需要的对象

4月前

[db:摘要]

Selenium库快速查找网页元素及执行浏览器模拟操作

3月前

[db:摘要]

appium 元素定位方法

3月前

[db:摘要]

Windows操作系统----安全机制----对象

3月前

对象结构 对象是对操作系统中需要保护和集中管理的资源的一种抽象,对象拥有统一的固定头部,保存着抽象出来的信息。此外还有可选头部和对象体。 nt!_OBJECT_HEADER0x000 Poin

浏览器window对象常用属性及方法有哪些

2月前

一、BOM的概念1.1 什么是BOM?        BOM:Browser Object Model 是浏览器对象模型,BOM由多个对象构成,其中代表浏览器窗口的windo

BOM(浏览器对象模型)

2月前

一、BOM 1、什么是BOM Browser Object Model:浏览器对象模型 2、作用: (1)可以操作浏览器窗口,以及浏览器窗口中的控件(HTML标签):即可以在js程序中操作标签。 (2)可以实现页面和用户之间的动态

发表评论

全部评论 0
暂无评论