H5新API

作者: LorenaLu | 来源:发表于2017-07-17 11:44 被阅读0次

    1.file api

    multiple 允许选择多个文件
    File 对象
    lastModified 最后一次修改时间(毫秒)
    lastModifiedDate 最后一次修改日期
    name 文件名
    type 文件类型
    size 文件大小

        <input type="file" id="myFile" multiple>
    
      var inp = document.querySelector("#myFile");
        inp.onchange = function(){
            console.log(this.files)
        }
    

    FileReader
    1、构建FileReader 实例
    2、选择要使用的读取方式,如readAsDataURL(),将文件对象传递给该方法
    3、监听读取完成事件Onload,通过this.result 将得到读取结果
    4、其他事件监听
    读取方式
    fr.readAsDataURL(file); 以地址读取 base64
    fr.readAsText(file); 以文本读取
    fr.readAsBinaryString(file); 以二进制读取
    事件
    onload 读取完成
    onloadstart 开始读取
    onloadend 结束读取 无论成功失败都会触发
    onerror 错误触发
    onabort 中断读取时触发
    fr.abort() 中断读取

      var inp = document.querySelector("#myFile");
        inp.onchange = function(){
            console.log(this.files)
            for(var i=0;i<this.files.length;i++){
                var file = this.files[i];
                console.log(file);
                var fr = new FileReader();
                fr.readAsDataURL(file);
                // fr.readAsText(file); 
                // fr.readAsBinaryString(file);
                fr.onload = function(){
                    console.log(this.result);
                    // var img = new Image();
                    // img.src = this.result;
                    // document.body.appendChild(img);
                }
            }
        }
    

    2、drag (拖拽)

    draggable 允许该元素被拖动(添加即为TRUE的属性: disabled checked selected multiple draggable
    contenteditable:允许元素可被编辑内容IE8+,应用于表格)

     <div class="box1">
            <div class="box" draggable="true"></div>
        </div>
        <div class="box2"></div>
    
    var box= document.querySelector(".box");//被拖拽元素
        var target= document.querySelector(".box2");//目标元素
        box.ondragstart = function(e){
            console.log(1,"开始");
            console.log(e.dataTransfer);
        //在拖拽开始拿到拖拽元素的标识
     e.dataTransfer.effectAllowed = "move";
    
        e.dataTransfer.setData("text",e.target.className);
        }
        box.ondrag = function(){
            console.log(2,"拖拽中")
        }
        box.ondragend = function(){
            console.log(3,"拖拽结束")
        }
        target.ondragenter = function(){
            // console.log(4,"拖拽进入目标元素")
        }
        target.ondragleave = function(){
            // console.log(5,"拖拽离开目标元素")
        }
        //浏览器默认禁止在元素上drop(禁止将其他元素拖拽到目标元素上放手)
        //需要在dragover时 阻止浏览器的默认事件才能触发ondrop
        target.ondragover = function(e){
            // console.log(6,"在目标元素上移动")
            e.preventDefault();//阻止浏览器默认事件
    e.dataTransfer.dropEffect = "move";
        }
        target.ondrop = function(){
            console.log(7,"在目标元素放手");
          //  target.appendChild(box);
    var eClass = e.dataTransfer.getData("text");
    target.appendChild(document.querySelector("."+eClass));
        }
    

    dataTransfer 贯穿于整个拖拽生命周期的承载对象
    dataTransfer.setData(format,content)
    format : 数据格式,支持text URL 或其他MIME 类型
    content : 要传递的内容
    dataTransfer.getData(format) 获取通过setData设置的值

    dataTransfer.effectAllowed 设置拖拽元素的鼠标效果
    常见的有:copy link move none all copyLink...
    当指定为none时,ondrop无法触发
    e.dataTransfer.setdragImage(img,10,10)
    只能在ondragstart 里设置
    dataTransfer.dropEffect 设置在目标元素的鼠标效果(在dragover里面设置)
    如果和effectAllowed 同时设定,则必须与affectAllowed 值相同,否则无法放置拖拽元素

    3、fullScreen

        <div id="box">这是全屏内容</div>
        <button>全屏</button>
        <button>退出全屏</button>
    
        console.dir(document);
        document.querySelector("button").onclick = function () {
            // document.body.webkitRequestFullScreen();           document.querySelector("#box").webkitRequestFullScreen();
        }
        document.querySelectorAll("button")[1].onclick = function () {
            document.webkitCancelFullScreen();
        }
    
    

    4、visibility页面可见性

    console.log(document.visibilityState);
        document.addEventListener("visibilitychange", function () {
            console.log(document.visibilityState);
            console.log(document.hidden);
        })
    

    5、storage

    存储分为 本地存储 和 会话存储
    在一定程度上解决了 cookie 的不便利性(4K,数据自动被传上服务器)
    本地存储 :localStorage
    会话存储 :sessionStorage
    存储上限 :5M
    存储模式: 键值对(键值都要是字符串)
    API:灵活
    localStorage 除非手动清除,否则永久存在,没有超时时间
    localStorage 和 sessionStorage 的用法相同。唯一不同的是,有效期不同。
    sessionStorage 是只在会话期有效。localStorage 永久有效

     console.log(localStorage)
        localStorage.setItem("user","admin")//增加或修改存储内容
        console.log(localStorage.getItem("user"))
        var obj = {age:30,adress:"jing"}
         localStorage.setItem("desc",JSON.stringify(obj))
        console.log(JSON.parse(localStorage.getItem("desc")));
        localStorage.removeItem("user");//移除指定的存储内容
        console.log(localStorage);
    
        localStorage.clear();
        console.log(localStorage);//清空存储内容
    

    6、location

    geolocation 是有关用户隐私的API,需要得到用户的同意才能有效
    为了安全限定,要求正式网站必须使用HTTPS协议
    自行测试使用localhost 访问(注意:IP地址不可)
    服务器不稳定
    navigator.geolocation.getCurrentPosition(successCallback,err)
    sucessCallback 成功回调函数,返回坐标信息
    err 失败回调函数 返回失败信息
    options 配置项

    相关文章

      网友评论

        本文标题:H5新API

        本文链接:https://www.haomeiwen.com/subject/wrhfkxtx.html