菜鸟文章:html5API

163 阅读3分钟

htmlAPI主要是 html5新增的一些api ,比如文件上传,网络状态,多媒体应用

1.网络状态

html5给我们提供了2个事件online和offline

online用户网络连接时被调用

offline用户网络断开时被调动

    window.addEventListener('online', function(){
       console.log('网络连接恢复!');
    })
​
​
    window.addEventListener('offline', function(){
       console.log('网络连接中断!');
    })

小案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
         .error{
             color: red;
         }
​
         .status{
             color: steelblue;
         }
​
         .success{
             color: green;
         }
​
         span{
             position: absolute;
             top: 50%;
             left: 50%;
             transform: translate(-50%,-50%);
         }
    </style>
</head>
<body>
    <span class="status">网络检测中....</span>
</body>
</html>
<script>
    let status = document.querySelector("span");
​
    window.addEventListener('online', function(){
          
          status.className = 'success';
          status.innerHTML = "网络连接成功";
    })
​
​
    window.addEventListener('offline', function(){
       
       status.className = 'error';
       status.innerHTML = "网络连接失败";
          
    })
</script>

在pc端时只能判断无线和网线是否连接,而不能判断是否有网络、是否可以上网

建议通过ajax请求去判断

ajax({
 url: 'x.html',
 success: function(result){
    console.log("网络连接成功");
 }, 
 error: function(result){
    console.log("网络连接成功");
 }
});

2.全屏

图片放大是页面中比较常见的功能, 但是html5提供的API存在很多兼容性问题,所以需要我们编写兼容性代码

     let imgs  = document.querySelector(".imgs");
​
     let fullScreen = document.querySelector(".fullScreen");
​
     let outScreen = document.querySelector(".outScreen");
    
     //全屏
     fullScreen.addEventListener('click',function(){
​
         enterFullScreen(imgs);
         
     })
​
​
     //退出全屏
     document.addEventListener('click',function(e){
       
        
       
            exitFullscreen();
        
​
        
     })
​
    
​
    //展开全屏
    function enterFullScreen(obj){
        let fullScreen = obj.requestFullScreen || obj.webkitRequestFullScreen || imgs.mozRequestFullScreen || imgs.msRequestFullscreen;
​
        fullScreen.call(obj);
    }
​
    
​
     //退出全屏
    function exitFullscreen() {
        var el = document;
        var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullScreen;
        cfs.call(el);
  }

3.文件读取

该**readAsText()** 方法用于读取指定Blob或的内容File。读取操作完成后,readyState将更改为 DONE,将loadend触发事件,并且该 result属性将文件内容包含为文本字符串。

FileReader.onerror

error事件的处理程序。每次读取操作遇到错误时,都会触发此事件。

FileReader.onload

load事件的处理程序。每当读取操作成功完成时,都会触发此事件。

FileReader.readAsDataURL()

开始读取指定的内容Blob,完成后,该result属性包含一个data:表示文件数据的URL。

FileReader.readAsText()

开始读取指定内容Blob,完成后,该result属性将文件内容包含为文本字符串。可以指定一个可选的编码名称。

案例1:读取文本内容

    let files = document.querySelector(".files");
​
    let box  = document.querySelector(".box");
​
     files.addEventListener('change',function(){
         
        //打印文件信息
        //  console.log(this.files);
​
​
          //初始化一个文件对象
          let fileReader =  new FileReader();
           
          //读取内容 (会把读取内容)
          fileReader.readAsText(this.files[0]);
​
​
          //监听是否读取完毕
          fileReader.onload =  function(){
              
            box.innerHTML = this.result;
          }
​
     })

案例2: 设置文件图片

let files = document.querySelector(".files");
​
let box  = document.querySelector(".box");
​
 files.addEventListener('change',function(){
     
    //打印文件信息
    //  console.log(this.files);
​
​
      //初始化一个文件对象
      let fileReader =  new FileReader();
       
      //读取内容 (会把读取内容)
      fileReader.readAsDataURL(this.files[0]);
​
​
      //监听是否读取完毕
      fileReader.onload =  function(){
          
          //生成图片节点添加到box中
​
          let imgs = document.createElement("img");
          
           imgs.className = "select";
           imgs.setAttribute('src',this.result);
​
           box.append(imgs);
​
      }
​
 })

案例3:实现文件上传

 function uploadPic() {
         var form = document.getElementById('upload')
         // 通过FormData将文件转成二进制数据
         var formData = new FormData(form);
         $.ajax({
            url:"上传地址",
             type:'post',
             data:formData,
             processData:false,   //不要去处理发送的数据
             success:function (res) {
                 if(res){
                     alert('上传成功')
                 }
                
             },
             error:function(err){
                 alert('网络失败,请稍后再试',err)
             }
         })
     }

4,添加高德地图API

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
    <title>地图显示</title>
    <style>
        html,
        body,
        #container {
          width: 600px;
          height: 600px;
          margin:100px auto;
        }
    </style>
</head>
<body>
<div id="container"></div>
<!-- 加载地图JSAPI脚本 -->
<script src="https://webapi.amap.com/maps?v=1.4.15&key=d2114f19fe2ece1117fd3074a7aa5b8d"></script>
<script>
    var map = new AMap.Map('container', {
        resizeEnable: true, //是否监控地图容器尺寸变化
        zoom:11, //初始化地图层级
        center: [116.397428, 39.90923] //初始化地图中心点
    });
</script>
</body>
</html>