H5 JS API 02

时间:2022-11-02 13:57:58

1.1 网络状态

我们可以通过window. navigator.onLine来检测,用户当前的网络状况,返回一个布尔值,这个不能实时的通知。

addEventListener 进行绑定online从没网络到有网络的时候调用

addEventListener 进行绑定.offline从有网络到没网的时候调用

事件是给window绑订的

1.2 地理定位

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

1.2.1 获取地理信息方式

1、IP地址

2、三维坐标

GPS(Global Positioning System,全球定位系统)

Wi-Fi

手机信号

3、用户自定义数据

如下图对不同获取方式的优缺点进行了比较,浏览器会自动以最优方式去获取用户地理信息。

H5  JS API  02

1.2.2 隐私

HTML5 Geolocation 规范提供了一套保护用户隐私的机制。必须先得到用户明确许可,才能获取用户的位置信息。

1.2.3 API详解

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options) 获取当前地理信息

值:成功执行第一个回调值,失败执行第二个回调值

  第三个值可选的值,是一个对象 {timeout:1000}

  1. window.navigator.getlocation.getCurrentPosition(function(position){
  2. console.log("成功"+position);
  3. },function(error){
  4. console.log("获取失败");
  5. });
 

navigator.geolocation.watchPosition(successCallback, errorCallback, options) 重复获取当前地理信息

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

position.coords.latitude纬度

position.coords.longitude经度

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

3、可选参数 options 对象可以调整位置信息数据收集方式

a)timeout 超时设置,单位为ms

百度地图的用法:

官网:http://lbsyun.baidu.com/

(1)进入官网 直接找到javascript API

H5  JS API  02

(2)直接找到示例DEMO,复制源代码

(3)需要获取密钥 (自己申请,需要一到两个工作日)

(4)创建应用(填写浏览器端)

(5)利用密钥去替换script标签里面的“你的密钥”

百度地图的用法

H5  JS API  02

 
 

1.3 Web存储

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,每一次发送请求都会携带上cookie,会造成带宽的浪费,给开发带来诸多不便,HTML5规范则提出解决方案。

web存储的含义是将数据存储到用户的电脑上,这样可以缓解服务器的压力,并且提高体验

1.3.1 特性

1、设置、读取方便

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

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

1.3.2 window.sessionStorage

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

2、在同一个窗口下数据可以共享

补充:通过跳转可以

1.3.3 window.localStorage

1、永久生效,除非手动删除

2、可以多窗口共享

  1. window.localStorage.setItem("username","feifei");
  2. window.sessionStorage.setItem("username2","feifei2");
 

1.3.4 方法详解

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

getItem(key) 读取存储内容】

  1. window.localStorage.getItem("username");
  2. window.sessionStorage.getItem("username2");
 

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

  1. window.localStorage.removeItem("username");
  2. window.sessionStorage.removetem("username2");
 
 

【clear() 清空所有存储内容】

  1. window.localStorage.clear();
 
 

【key(n)以索引值来获取存储内容】

  1. window.localStorage.key(0);
    
 
  【   length     获取数据的长度】
  1. window.localStorage.length;
 
 

区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。作用域不同,sessionStorage不在不同的浏览器窗口*享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

差异性:

相同点:都是存储数据,存储在web端,并且都是同源

不同点:

(1)cookie 只有4K 小 并且每一次请求都会带上cookie 体验不好,浪费带宽

(2)session和local直接存储在本地,请求不会携带,并且容量比cookie要大的多

(3)session 是临时会话,当窗口被关闭的时候就清除掉 ,而 local永久存在,cookie有过期时间

(4)cookie 和local都可以支持多窗口共享,而session不支持多窗口共享 但是都支持a链接跳转的新窗口

存入一个json的方法:

H5  JS API  02
 

取出json的方法

1.先把字符串转换成json

H5  JS API  02

 

1.4 全屏

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

requestFullScreen() 开启全屏显示

cancelFullScreen() 关闭全屏显示

1.5 文件读取

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

1.5.1 FileList对象

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

H5  JS API  02

 

1.5.2 FileReader对象

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

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

H5  JS API  02

 v

实例方法

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

事件监听

onload 当文读取完成时调用

属性

result 文件读取结果

参考资料

https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader#toc

1.6拖拽

在HTML5的规范中,我们可以通过为元素增加draggable="true"来设置此元素是否可以进行拖拽操作,其中图片、链接默认是开启的。

1.6.1拖拽元素

页面中设置了draggable="true"属性的元素,其中<img>、<a>标签默认是可以被拖拽的

H5  JS API  02

1.6.2目标元素

页面中任何一个元素都可以成为目标元素

1.6.3事件监听

根据元素类型不同,需要设置不同的事件监听

拖拽元素

1.drag 应用于拖拽元素,整个拖拽过程都会调用

2.dragstart应用于拖拽元素,当拖拽开始时调用

3.dragleave应用于拖拽元素,当鼠标离开拖拽元素时调用

4.dragend应用于拖拽元素,当拖拽结束时调用

目标元素

1.dragenter应用于目标元素,当拖拽元素进入时调用

2.dragover应用于目标元素,当停留在目标元素上时调用 阻止浏览器的默认禁止行为(event.preventDefault)

H5  JS API  02

 

3.drop应用于目标元素,当在目标元素上松开鼠标时调用

4.dragleave应用于目标元素,当鼠标离开目标元素时调用

H5  JS API  02

 可以通过dataTransfer拿到当前的拖拽进来的文件列表

1.7多媒体

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

属性:currentSrc、currentTime、duration

事件:

参考文档

http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

1.8应用

1、自定义视频播放器

H5  JS API  02

 

H5 JS API 02的更多相关文章

  1. 微信支付&period;NET版开发总结&lpar;JS API&rpar;,好多坑,适当精简

    前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...

  2. 微信支付&period;NET版开发总结&lpar;JS API&rpar;,好多坑,适当精简。

    前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...

  3. H5,API的pushState&lpar;&rpar;,replaceState&lpar;&rpar;和popstate&lpar;&rpar;用法

    pushState和replaceState是H5的API中新添加的两个方法.通过window.history方法来对浏览器历史记录的读写. pushState和replaceState 在 HTML ...

  4. Atitit&period;提升软件Web应用程序 app性能的方法原理 h5 js java c&num; php python android &period;net

    Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net 1. 提升单例有能力的1 2. 减少工作数量2 2.1. 减少距 ...

  5. 对飞猪H5端API接口sign签名逆向实验

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  6. H5&plus;JS&plus;CSS3 综合应用

    慕课网新教程H5+JS+CSS3 实现的七夕言情主题效果已经出炉了 从设计到实现到录制与编写用了快1个月的时间,说真的这个案例是慕课定制的,我之前也没有系统的做过这样的一个效果,在实现的时候自己也重新 ...

  7. JQuery plugin ---- simplePagination&period;js API

    CSS Themes "light-theme" "dark-theme" "compact-theme" How To Use Step ...

  8. Node&period;js API 初解读(一)

    Node.JS API 初解读 Version: NodeJs v6.2.0 一. Assert 1.简介 Assert模块主要用于断言.如果表达式不符合预期,就抛出一个错误. 该模块用于编写程序的单 ...

  9. Web报表工具FineReport的JS API开发(二)

    上次介绍FineReport的JS API中的第一类开发--FR,这次就来介绍一下FS和contentWindow类的开发. 1 FS FS是数据决策系统中的js接口,比如说FS.tabPane.ad ...

随机推荐

  1. js 方法封装实例

    (function(){ if(windows.Mr_2_B){windows.Mr_2_B={};} function trim(txt){return txt.replace(/(^\s*|(\s ...

  2. 基于Erlang VM的函数式编程语言Elixir

    Elixir官网:http://elixir-lang.org/ Elixir是一种函数式动态语言,用于构建可伸缩.易维护的应用程序. Elixir是基于Erlang VM的,其广为人知的特点是运行低 ...

  3. 使用awk统计字段重复实践

    awk awk是一种规格化文件的分析工具, 主要处理对象类似数据库导出的条目文本文件, 其中一行,就对应一个记录,每个记录包含若干个字段. 类似这种文本: [root@www ~]# last -n ...

  4. HDU 1224 Free DIY Tour

    题意:给出每个城市interesting的值,和城市之间的飞行路线,求一条闭合路线(从原点出发又回到原点) 使得路线上的interesting的值之和最大 因为要输出路径,所以用pre数组来保存前驱 ...

  5. 鼠标双击范围基于Win7

    TP鼠标双击范围主要是修改Registry中的HKEY_CURRENT_USER\Control Panel\Mouse里面的两个参数 DoubleClickHeight跟DoubleClickWid ...

  6. Android 涂鸦最佳实践

    Android中实现手势画图一般都两种方式,一是直接在View上绘制,而是使用SurfaceView. 两者还是有一些差别的.简介下. View:显示视图,内置画布,提供图形绘制函数.触屏事件.按键事 ...

  7. 使用Sybmol模块来构建神经网络

    符号编程 在之前的文章,我们介绍了NDArray模块,它是MXNet中处理数据的核心模块,我们可以使用NDArray完成非常丰富的数学运算.实际上,我们完全可以使用NDArray来定义神经网络,这种方 ...

  8. NOSQL -- mongoDB的了解与安装&lpar;Wins10&rpar;

    NOSQL -- mongoDB的了解与安装 首先看看什么是nosql: 我的理解:非关系型数据库,大多是以map形式存储,map<key,value>,适合存储,查询.redis也是no ...

  9. 【数组】—冒泡排序&amp&semi;&amp&semi;选择排序---【巷子】

    /* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...

  10. &lbrack;QPlugins&rsqb;概述

    一个需求:显示一个窗体,并显示"Hello,World".(这个例子不一定合适) 用DELPHI 实现上面的需求非常的简单,用向导创建一个项目,同时也创建好了一个窗体,再拖一个La ...