HTML5新增API


学习目标:

typora-copy-images-to: media


1 网络状态

我们可以通过window.navigator.onLine来检测,用户当前的网络状况,返回一个布尔值, 但是不同浏览器会存在差异

所以HTML5 给我们提供了2个事件 online 和 offline

online用户网络连接时被调用

offline用户网络断开时被调用

他们监听的对象都是window

示例

先引入jquery.min.js,代码如下

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>onLine</title>
	<style>
		body {
			padding: 0;
			margin: 0;
			background-color: #F7F7F7;
		}

		p {
			width: 200px;
			height: 40px;
			text-align: center;
			line-height: 40px;
			margin: 100px auto;
			color: #FFF;
			font-size: 24px;
			background-color: #000;
			display: none;
		}
	</style>
</head>
<body>
	<p class="tips"></p>
	<script src="jquery.min.js"></script>
	<script>
	   // 通过 window.navigator.onLine 来检测网络是否可用
	   // alert(window.navigator.onLine);
	   // 1. 当网络连接到时候  弹出 p 显示网络连接 然后消失
	   window.addEventListener('online', function() {
	   	  $(".tips").text("网络已经连接").fadeIn(500).delay(1000).fadeOut();
	   })
 		// 2. 当网络断开到时候  弹出 p 显示网络已断开 然后消失
 		window.addEventListener('offline', function() {
	   	  $(".tips").text("奥利个奥,网络断开了").fadeIn(500).delay(1000).fadeOut();
	   })

	</script>
</body>
</html>

2 全屏

HTML5规范允许用户自定义网页上任一元素全屏显示。

1、Node.requestFullScreen() 开启全屏显示

2、Node.cancelFullScreen() 关闭全屏显示

由于其兼容性原因,不同浏览器需要添加前缀如:

webkit内核浏览器:webkitRequestFullScreenwebkitCancelFullScreen,如chrome浏览器。

Gecko内核浏览器:mozRequestFullScreenmozCancelFullScreen,如火狐浏览器。

ms 微软 msRequestFullscreen

3、document.fullScreen检测当前是否处于全屏

不同浏览器需要添加前缀

document.webkitIsFullScreendocument.mozFullScreen

全屏伪类选择器 也有兼容性问题 需要添加前缀

:full-screen:-webkit-full-screen {}:moz-full-screen {}

示例

图片的路径名字可以自己设置

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	div:-webkit-full-screen {   /* 注意兼容性问题  全屏显示伪类选择器 */
		background-color: pink;
	}
	</style>
</head>
<body>
<div>
	<img src="pic1.png" height="300"  alt="">
	<button id="full">全屏显示</button>
	<button id="cancelFull">取消全屏</button>
	<button id="isFull">是否全屏</button>
</div>
	
	<script>
	// 全屏显示可以是任意元素
	// H5 API 存在兼容性问题  ie9 +  
	// 即使高版本浏览器有兼容性问题  
	// 不同浏览器需要添加不同的前缀 webkit  moz  o  ms 
	var div = document.querySelector("div");
	// 1 单击全屏显示
	document.querySelector("#full").onclick = function() {
		// div.webkitRequestFullScreen(); 开启全屏
		// 能力检测  做一个兼容性的解决方法
		 if(div.requestFullScreen) {  // 正常浏览器 
		 	div.requestFullScreen();
		 } else if (div.webkitRequestFullScreen) {  // webkit 内核
		 	div.webkitRequestFullScreen();
		 } else if (div.mozRequestFullScreen) {  // moz
		 	div.mozRequestFullScreen();
		 } else if (div.msRequestFullscreen) {  // ms 微软  这里面有个坑 别掉进去了
		 	div.msRequestFullscreen(); //  ms 里面这样写msRequestFullscreen()     s是小写的  
		 } else {   // 欧朋
		 	div.oRequestFullScreen();
		 }
	}

	// 2 取消全屏  跟元素没有关系  跟 document
	document.querySelector("#cancelFull").onclick = function() {
		 document.webkitCancelFullScreen();  // document 退出全屏
	}
	// 3 是否全屏显示
	 document.querySelector("#isFull").onclick = function() {
		 alert(document.webkitIsFullScreen); // webkit是否存在 全屏状态
	}
	</script>
</body>
</html>

效果显示:
在这里插入图片描述

3 文件读取

我们想: 可以吧上传的文件,内容显示到页面? 或者 上传完毕图片显示缩略图到页面上。。。

通过FileReader对象我们可以读取本地存储的文件,使用 File 对象来指定所要读取的文件或数据。其中File对象可以是来自用户在一个 元素上选择文件后返回的FileList 对象,也可以来自由拖放操作生成的 DataTransfer

3.1 Files对象

由于HTML5中我们可以通过为表单元素添加multiple属性,因此我们通过上传文件后得到的是一个Files对象(伪数组形式)。

3.2FileReader对象

HTML5新增内建对象,可以读取本地文件内容。

var reader = new FileReader; 可以实例化一个对象

实例方法

1、readAsDataURL() 以DataURL形式读取文件

事件监听

onload 当文读取完成时调用

属性

result 文件读取结果

参考文档

示例:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<input type="file" name="" id="" multiple > 
	<img src="" alt="" width="100">
	<script>
	// 我们想:  可以吧上传的文件,内容显示到页面?  或者 上传完毕图片显示缩略图到页面上。。。
	// 1. 上传我们的文件  借助于 文件域  input file 
	//
	var file = document.querySelector("input");
	var img = document.querySelector("img");
	file.onchange = function() { //  onchange 当发生改变的时候   下拉菜单 select 也是这个事件
		// console.log("选择了文件");
		// console.log(file); 
		// for( var k in file) {
		// 	console.log( k + "~~~~" + file[k]);
		// }
		console.log(this.files);   // 上传文件的集合 可以是一个文件也可以是很多

		// 2. 选择我们要的文件, 进行 读取  fileReader  文件里面的内容
		// 初始化了一个 reader 对象 
		var reader = new FileReader();  

		 // reader.readAsText(文件对象);
		 // 读取 this.files[0] 文件里面的内容
		 reader.readAsDataURL(this.files[0]);  

		  // 当这个文件的内容读取完毕之后 ,会把内容存放到  result里面
		  
		  // 3. 把读取的内容显示到 页面中..
		  // reader 已经读取完毕 而且读取的内容 存放到了  result里面了 
		  reader.onload = function() {

		  		// console.log(this.result);
		  		// 把生成的内容 赋值给 图片 src  
		  		img.src = this.result;
		  }
           
	}
	
	</script>
</body>
</html>

4 地理定位

在HTML规范中,增加了获取用户地理信息的API,这样使得我们可以基于用户位置开发互联网应用,即基于位置服务 (Location Base Service)

4.1 API详解

1、获取当前地理信息

navigator.geolocation.getCurrentPosition(successCallback, errorCallback) 

2、重复获取当前地理信息

navigator. geolocation.watchPosition(successCallback, errorCallback)

当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position。

position.coords.latitude 纬度

position.coords.longitude经度

position.coords.accuracy精度

position.coords.altitude海拔高度

当获取地理信息失败后,会调用errorCallback,并返回错误信息error

参考文档

4.2 应用

在现实开发中,通过调用第三方API(如百度地图)来实现地理定位信息,这些API都是基于用户当前位置的,并将用位置位置(经/纬度)当做参数传递,就可以实现相应的功能。

http://lbsyun.baidu.com/ 百度地图api

5 拖拽

在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

5.1 拖拽和释放

拖拽:Drag

释放:Drop

拖拽指的是鼠标点击源对象后一直移动对象不松手,一但松手即释放了

5.2 设置元素为可拖放

draggable 属性:就是标签元素要设置draggable=true,否则不会有效果

注意: 链接和图片默认是可拖动的,不需要 draggable 属性。

5.2 拖拽API的相关事件

被拖动的源对象可以触发的事件:

(1)ondragstart:源对象开始被拖动

(2)ondrag:源对象被拖动过程中(鼠标可能在移动也可能未移动)

(3)ondragend:源对象被拖动结束

拖动源对象可以进入到上方的目标对象可以触发的事件:

(1)ondragenter:目标对象被源对象拖动着进入

(2)ondragover:目标对象被源对象拖动着悬停在上方

(3)ondragleave:源对象拖动着离开了目标对象

(4)ondrop:源对象拖动着在目标对象上方释放/松手

拖拽API总共就是7个函数!!

5.3 DataTransfer

在进行拖放操作时,DataTransfer 对象用来保存被拖动的数据。它可以保存一项或多项数据、一种或者多种数据类型

6 Web存储

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。

6.1 特性

1、设置、读取方便、页面刷新不丢失数据

2、容量较大,sessionStorage约5M、localStorage约20M

4、只能存储字符串,可以将对象JSON.stringify() 编码后存储

6.2 window.sessionStorage

1、生命周期为关闭浏览器窗口

2、在同一个窗口(页面)下数据可以共享

6.3 window.localStorage

1、永久生效,除非手动删除 关闭页面也会存在

2、可以多窗口(页面)共享(同一浏览器可以共享)

6.4 方法详解

setItem(key, value) 设置存储内容

getItem(key) 读取存储内容

removeItem(key) 删除键值为key的存储内容

clear() 清空所有存储内容

6.5 其它

WebSQL、IndexDB

7 应用缓存

HTML5中我们可以轻松的构建一个离线(无网络状态)应用,只需要创建一个cache manifest文件。

7.1 优势

1、可配置需要缓存的资源

2、网络无连接应用仍可用

3、本地读取缓存资源,提升访问速度,增强用户体验

4、减少请求,缓解服务器负担

7.2 缓存清单

一个普通文本文件,其中列出了浏览器应缓存以供离线访问的资源,推荐使用.appcache为后缀名

例如我们创建了一个名为demo.appcache的文件,然后在需要应用缓存在页面的根元素(html)添加属性manifest=“demo.appcache”,路径要保证正确。

7.3 manifest文件格式*

1、顶行写CACHE MANIFEST

2、CACHE: 换行 指定我们需要缓存的静态资源,如.css、image、js等

3、NETWORK: 换行 指定需要在线访问的资源,可使用通配符

4、FALLBACK: 换行 当被缓存的文件找不到时的备用资源

7.4 其它

1、CACHE: 可以省略,这种情况下将需要缓存的资源写在CACHE MANIFEST

2、可以指定多个CACHE: NETWORK: FALLBACK:,无顺序限制

3、#表示注释,只有当demo.appcache文件内容发生改变时或者手动清除缓存后,才会重新缓存。

4、chrome 可以通过chrome://appcache-internals/工具和离线(offline)模式来调试管理应用缓存

8 多媒体

方法:load()、play()、pause()

属性:currentSrc、currentTime、duration

事件:oncanplay, ontimeupdate,onended 等

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值