【html5总结】第三部分——新增其他API

这里是我所学到的h5中其他新增api,个人觉得对开发还是有一定帮助的,所以专门写在第三部分的文章里。

数据储存

在之前,本人一直使用cookie作为本地数据缓存的方法,但是该方法有比较多的限制,比如字节大小限制,受限于http服务,安全问题等;那么这些问题,就可以用另外两种方法来互补,分别是本地储存和会话储存。

会话存储

 // 定义颜色

        var myColor = "red";

        // 设置会话储存数据

        sessionStorage.setItem("myColor",myColor);

        // 获取会话储存的数据

        var _color = sessionStorage.getItem("myColor");

        // console.log(_color);// red

        // 删除会话储存(指定的)

        // sessionStorage.removeItem("myColor");

        // 删除所有的回话储存

        // sessionStorage.clear();

本地存储

  // 用户名称

        var userName = "adminxxx";

        // 设置本地储存(先储存数据)

        localStorage.setItem("userName",userName);

        // 获取本地储存(然后取数据)

        var _userName = localStorage.getItem("userName");

        // 删除储存(指定的数据)

        // localStorage.removeItem("userName");

        // 删除所有储存的数据

        // localStorage.clear();

这里就他们之间的区别做出以下优劣对比:

一、存储时间的问题

cookie如果不设置有效期的话,默认在关闭浏览器时清除

sessionStorage仅保持在当前窗口,支持跳转,但如果关闭当前对话框(这也是为什么叫做会话储存的原因),就会清除

localStorage如果不手动删除,就会一直有效

二、存储大小

这个也没啥好比的,cookie就能存几kb,后两个能存5mb

三、安全问题

cookie会参与服务端交互,会将数据通过http(这里就是cookie为什么要在http服务下)传递,所以会直接暴露密码类的敏感信息

localStorage和sessionStorage是单纯的前端存储,没啥服务器交互

p.s.关于存储这里只写最简单便捷的操作,详细带我有空写一下有关session具体的东西



元素拖拽事件

这里要区别于mousemove,不动的可以在看完以后试一下。(有点像桌面上,拖动小图标的做法)

        // 编码:

            var box = document.querySelector(".box");

            // 开始拖动(按下目标元素并开始拖动)

            box.ondragstart = function(){

                // console.log("ondragstart");

            }

            // 结束拖动(拖动目标元素并松开鼠标)

            box.ondragend = function(){

                // console.log("ondragend");

            }

            // 拖拽移入目标元素(拖动标签移入目标元素)

            box.ondragenter = function(){

                // console.log("ondragenter");

            }

            // 拖拽移出目标元素(拖动标签移出目标元素)

            box.ondragleave= function(){

                // console.log("ondragleave");

            }

            // 拖拽在目标元素上悬停

            box.ondragover = function(event){

                // console.log("ondragover");

                // 阻止浏览器默认行为

                event.preventDefault();

            }

            // 拖动到目标元素上悬停(结合ondragover行为)

            box.ondrop = function(){

                console.log("ondrop");

            }

备注:

以上事件是拖拽行为,是PC端的行为,需要给目标元素添加标签属性 draggable="true",才能拖拽元素


元素触摸事件

这里是涉及到移动端的概念,试想pc端可以用鼠标进行点击操作,但用手机,用iPad呢?这里就涉及到了触摸这一事件

开始触摸  ontouchstart

触摸滑动  ontouchmove

结束触摸  ontouchend

这里的操作并没有什么难点。就是要区别于pc端而已,还有就是移动端需要使用自适应单位(比如%,rem,em等)


全屏显示方法

许多时候,网页会提供一个双击或者单击显示全屏图片或者视频的功能,js原生代码可以设置双击事件,然后设置css属性,这里h5提供了一个更加便捷的方法

equestFullscreen()  请求全屏显示

exitFullscreen()  退出全屏

这里要注意的点是,exitFullscreen方法要绑定在document上,以为全屏显示后图片会占满document文档。


断网事件和连网事件

这个就是用来查询网络状态的,在断网或者连网以后触发,这里可以理解为监听网络状态的方法

online  连网后触发

offline  断网后触发

var msgElement = document.querySelector(".message");

        // 监听网络状态

        // 网络断开了(拔网线了)

        window.addEventListener('offline', function () {

            console.log("网络断开");

            msgElement.innerHTML = "网络掉线了";

            // msgElement.classList.add("error");

            // msgElement.classList.remove("success");

            msgElement.className = "message error";

            animate(msgElement,{top: 0})

        })

        // 网络连接了

        window.addEventListener('online', function () {

            console.log("网络连接");

            msgElement.innerHTML = "网络连接了";

            msgElement.className = "message success";

            animate(msgElement,{top: "-100px"})

        })


地理定位

说来惭愧,该内容讲解时,我在睡觉。。

咳咳,该属性其实是涉及到私人隐私的,因此在使用时,如果浏览器拒绝提供敏感信息,就会导致请求失败。除此之外呢,该方法其实也并没有什么难点。也就是返回的值多一点吧

语法格式:navigator.geolocation.getCurrentPosition(pos)

返回属性:

pos.latitude    十进制数的纬度

pos.longitude   十进制数的经度

pos.accuracy    位置精度

pos.altitude    海拔,海平面以上以米计

pos.altitudeAccuracy    位置的海拔精度

pos.heading     方向,从正北开始以度计

pos.speed   速度,以米 / 每秒计

timestamp   响应的日期 / 时间

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容