admin 管理员组文章数量: 1086019
2023年12月17日发(作者:未初始化的局部变量)
HTML5中国:
检测浏览器支持哪些HTML5新特性的方法
HTML5不能说是一个全新的事物,但是大部分人对HTML5的了解还是比较少的。(如果你想了解HTML5的话,不妨查看IE9发布的HTML5视频。) 虽然目前新版的主流浏览器,诸如IE9、Firefox4、Chrome10都已经开始支持HTML5特性了,但是目前所有浏览器对HTML5的支持事不 完整的,主要是因为HTML5还处在制定过程中。如果你想检测你的浏览器究竟支持 HTML 5 的哪些特性,可以查看下面我们介绍的一种方法。
当 浏览器渲染 web 页面的时候,它会构造一个文档对象模型(Document Object Model,DOM)。这是一组用于表现页面上 HTML 元素的对象。每一个元素,例如每一个
,每一个
window 和 document,不过它们不是用来表示特定元素的。
所有的 DOM 对象都有一些通用属性,也有其自己特有的属性。支持 HTML 5 特性的浏览器就会包含这种独一无二的属性。因此,我们利用这种技术,就可以检测浏览器究竟支持哪些新特性。在本节的后面的部分中,我们将从易到难地详细介绍这种技术。
Modernizr —— HTML 5 检测库
Modernizr 是一个开源的,基于 MIT 协议的 JavaScript HTML 5特性检测库。它能够检测很多 HTML 5 和 CSS 3 的特性。你可以在其主页或者这里的地址(,注意修改后缀名)中找到最新版本(当前最新版本是 1.7)。同别的 JS 库一样,你应该在 head 块中将其引入:
…
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中国:
版权声明:本文标题:检测浏览器支持哪些HTML5新特性的方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1702793002a431141.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
WEBs 应用手册说明书
年月日发(作者:下载手机版在哪下)应用手册霍尼韦尔是一家《财富》全球强的高科技企业。我们的高科技解决方案涵盖航空、汽车、楼宇、住宅和工业控制技术,特性材料,以及物联网。我们致力于将物理世界和数字世界深度融合,利用先进的云计算、数据分析和工业
c语言不支持的数据类型
年月日发(作者:激活密钥)语言不支持的数据类型.复数类型:语言不支持复数类型,这意味着语言无法直接处理复数运算。但是,可以使用结构体或数组来表示复数,并编写函数来执行复数运算。.分数类型:语言不支持分数类型,这意味着语言无法直接处理分数运算
windowscmd命令行下创建删除文件和文件夹
年月日发(作者:)命令行下创建删除文件和文件夹在下我们往往通过‘右键新建’命令来创建文件和文件夹,但有时会遇到以点开头的文件。下面是店铺跟大家分享的是在使用命令删除文件,欢迎大家来阅读学习。在使用命令删除文件工具原料电脑系统创建删除文件夹键
合肥工业大学JAVA程序设计问答题
年月日发(作者:存储聊天记录)、语言有哪些特点特点:简单性、面向对象技术、分布性、健壮性、安全性、体系结构中立、可移植性、解释执行、高性能、多线程..完全面向对象、平台无关性、多线程、平台是什么其运行原理是什么与一般操作平台的不同平台:由虚
2024年软考-高级软考-系统分析师考试历年真题常考点试题4带答案
年月日发(作者:不是内部命令)年软考-高级软考-系统分析师考试历年真题常考点试题带答案(图片大小可任意调节)第卷一.单选题(共题).()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。.组件图
Python程序设计期末复习题
年月日发(作者:看图软件)程序设计期末复习题说明:蓝色表示正确的选项或者判断为正确的答案。第章概述一、单选题.是一种()计算机程序设计语言。.编译型.解释型.翻译型.可视化.下列的编程语言是解释性语言的是()。.....获取“之禅”的语句是
2023年高级软考《系统分析师》考试历年真题摘选附带答案
年月日发(作者:文件怎么打开)年高级软考《系统分析师》考试历年真题摘选附带答案第卷一.全考点综合测验(共题).【判断题】支持继承性是面向对象程序设计语言和传统程序设计语言在语言机制方面的根本区别。.【单选题】信息按照()可以分为战略信息、战
大学计算机——计算思维于网络素养考试答案
年月日发(作者:函数怎么用)大学计算机——计算思维于网络素养第一章字符“”的码值为,则“”的码值为.电子计算机的存储能力有限,只能存储简单的控制程序代码。码表中字母对应的大写和小写之间码值相差,因此大写字母减去之后就可转换成小写字母。由于数
程序设计基础_真题-无答案
年月日发(作者:论坛源码)程序设计基础(总分,考试时间分钟)一、选择题.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。.调用语句.命令.口令.消息.程序设计语言的基本成分是数据成分、运算成分、控制成分和____
数据结构介绍
年月日发(作者:文件)数据结构介绍一、概述数据结构是计算机科学中的一个重要概念,是指数据的组织、管理和存储方式。它是一种用于表示和组织数据的方法,可以帮助我们更有效地处理和管理大量的数据。数据结构有很多种类型,每种类型都有自己独特的特点和用
软件工程师常见数据结构解析
年月日发(作者:网页版登录不了)软件工程师常见数据结构解析在软件工程领域,数据结构是一种用于组织和存储数据的重要工具。它们被广泛应用于算法设计、程序开发以及大型系统的构建中。本文将解析软件工程师常见的数据结构,包括数组、链表、栈、队列、树和
程序设计基础——基于C语言(第2版) 课后习题参考答案.
年月日发(作者:网页特效实训心得体会)习题参考答案.解释以下术语()计算机软件:计算机软件是一系列按照特定结构组织的程序、数据()和文档()的集合。()计算机程序:用计算机语言所编写的一系列指令的集合。()数据:数据是程序加工和处理的对象。
面向对象程序设计考试模拟题含参考答案
年月日发(作者:翻译)面向对象程序设计考试模拟题含参考答案一、单选题(共题,每题分,共分)、下列数据结构中,哪一个是类的底层实现()、数组结构、链表结构、哈希表结构、红黑树结构正确答案:答案解析:的底层是数组实现的。、属于以下哪种语言()、
2024年等级考试-计算机二级-Python语言程序设计考试历年真题常考点试题
年月日发(作者:网页界面设计艺术教程)年等级考试-计算机二级-语言程序设计考试历年真题常考点试题带答案(图片大小可任意调节)第卷一.单选题(共题).以下表达式,正确定义了一个集合数据对象的是:.{,’’,.}.(,’’,.).[,’’,.]
高级编程语言
年月日发(作者:网页静态模板)高级编程语言高级编程语言是指相对于机器语言和低级编程语言而言的一种编程语言。它不仅具备机器语言和低级编程语言的特点,同时还具备更高层次的抽象能力和人类可读性。本文将从高级编程语言的定义、特点、应用领域和未来发展
C语言常用算法程序汇总
年月日发(作者:文本框怎么把填充色设置成透明)语言常用算法程序汇总语言是一门广泛应用于计算机编程的语言,具有较高的效率和灵活性。在语言中,常见的算法程序包括排序算法、查找算法、递归算法等等。以下是一些常用的语言算法程序的汇总:.排序算法:-
面向对象程序设计名词解释汇总
年月日发(作者:中级数据库系统工程师)面向对象程序设计名词解释汇总篇一面向对象程序设计里,“类”那可太重要啦!啥是类呢?简单来说,类就是一种模板,就好像做蛋糕的模具一样。它定义了一组具有相同属性和行为的对象的蓝图。比如说,汽车就是一个类,具
软件设计师考试笔记考点(知识点)归纳总结
年月日发(作者:部署在哪个目录)、软件开发模型()原型法--适用于需求不明确的开发()瀑布模型--适用于需求已经明确的开发()螺旋模型--适用于风险较大的大中型项目()喷泉模型--主要用于描述面向对象的开发过程、成本估算时,方法以规模作为成
计算机基础自学资料
年月日发(作者:乱世佳人电影在线观看)目录知识点一、程序设计基本概念························································知识点二、程序设计的过程··················
网络连接计算机对象如何删除吗,怎么删除电脑wifi记录
如何删除笔记本电脑中保存的wifi热点,怎么删除电脑wifi记录?XP、Win7、Win8、Win10电脑中,删除wifi热点记录的操作方法都不一样;下
发表评论