• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 检测浏览器支持哪些HTML5新特性的方法

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

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

当浏览器渲染 web 页面的时候,它会构造一个文档对象模型(Document Object Model,DOM)。这是一组用于表现页面上 HTML 元素的对象。每一个元素,例如每一个 <p>,每一个 <p>,每一个 <span> 都有不同的 DOM 对象表示。当然,也有一种全局的对象,例如 window 和 document,不过它们不是用来表示特定元素的。

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

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

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<title>Dive Into HTML5</title>
<script src=”modernizr.min.js”></script>
</head>
<body>
…
</body>
</html>

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

if (Modernizr.canvas) {
// let’s draw some shapes!
} else {
// no native canvas support available 
}

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

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

function supports_canvas() {
return !!document.createElement(’canvas’).getContext;
}

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

createElement(‘canvas’) 语句就是用来创建这个对象的。然后,我们测试能不能调用 getContext() 函数。这个函数仅在支持 canvas API 的浏览器中才能使用。最后,我们用两个取非运算符 !! 将 getContext() 函数的返回值转换成 Boolean 值。

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

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

if (Modernizr.canvas) {
// 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() 函数;如果不支持,则会创建一个没有任何特殊属性的普通 DOM 对象。下面我们在此基础之上来检测 canvas text API。

function supports_canvas_text() {
if (!supports_canvas()) {
return false;
}
var dummy_canvas = document.createElement(’canvas’);
var context = dummy_canvas.getContext(’2d’);
return typeof context.fillText == ‘function’;
}

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

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

if (Modernizr.canvastext) {
// let’s draw some text!
} else {
// no native canvas text support available 
}

以上就是检测浏览器支持哪些HTML5新特性的方法的内容,更多相关内容请关注微课江湖()!

您可能想查找下面的文章:

  • 处理HTML5新标签的浏览器兼容版问题
  • 关于老式浏览器兼容HTML5和CSS3的问题
  • 关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
  • Html5插件教程之添加浏览器放大镜效果的商品橱窗
  • 微信浏览器取消缓存的方法
  • HTML5 Canvas之测试浏览器是否支持Canvas的方法
  • 让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
  • 谷歌浏览器小字体处理方案即12px以下字体
  • HTML5视频支持检测(检查浏览器是否支持视频播放)
  • HTML5拖拽文件到浏览器并实现文件上传下载功能代码

相关文章

  • 2018-12-03H5富文本编辑器的详细介绍
  • 2018-12-03HTML5的触摸事件
  • 2018-12-037个专门为HTML5开发人员打造的Web框架
  • 2017-08-06HTML5实现一个能够移动的小坦克示例代码
  • 2018-12-03html5+css3气泡组件的实现_css3_CSS_网页制作
  • 2018-12-03利用Html5实现文件异步上传功能代码实例
  • 2018-12-03HTML5 对各个标签的定义与规定:meta
  • 2018-12-03如何解决IOS中html5上传图片方向问题?
  • 2018-12-03HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题_html5教程技巧
  • 2018-12-03html字符串转换为HTML标签并使用

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5 web存储-web SQL示例代码分析
    • [HTML5游戏开发]挑战横版ACT(二):秀身手勇猛如当年
    • html 5中使用video元素制作一个影片播放器
    • H5的进阶段内联标签
    • 网页中增加一个 div, 怎样估算它的内存占用?
    • 举例详解HTML5中使用JSON格式提交表单_html5教程技巧
    • 浅析border-radius如何兼容IE_html5教程技巧
    • HTML5游戏开发 之 资源加载篇(1)
    • HTML5.1中有哪些新特性?
    • HTML5 组件Canvas实现电子钟的图文代码详情介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有