大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新......

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

一、网络监听接口

  • ononline:网络连通时触发
  • onoffline:网络断开时触发
  1. window.addEventListener("online", function(){});
  2. window.addEventListener("offline", function(){});

二、全屏接口

全屏操作的主要方法和属性:

1、requestFullScreen(); 开启全屏显示

但是不同的浏览器需要添加的前缀不同:

chrome:webkit , firefox:moz ,IE:ms

于是就变成了 webkitRequestFullScreen()mozRequestFullScreen()msRequestFullScreen()。由于使用的方法不同,所以要做兼容性处理。

2、cancelFullScreen(); 退出全屏显示

退出全屏的操作也要加前缀,并且调用其的元素只能是 ducument,而不能是其他元素。

3、fullscreenElement;是否是全屏状态

判断是否为全屏状态也要加前缀,并且调用其的元素只能是 ducument,而不能是其他元素。(注意只有 firefox是驼峰写法,最符合 html5 标准)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <div>
  9. <img src="images/l1.jpg"><br>
  10. <input type="button" value="进入全屏" id="btn1">
  11. <input type="button" value="退出全屏" id="btn2">
  12. <input type="button" value="是否全屏" id="btn3">
  13. </div>
  14. <script>
  15. // 开启全屏显示
  16. document.querySelector("#btn1").addEventListener("click", function () {
  17. var divObj = document.querySelector("div");
  18. if (divObj.requestFullscreen) {
  19. divObj.requestFullscreen();
  20. }
  21. else if (divObj.webkitRequestFullScreen) {
  22. divObj.webkitRequestFullScreen();
  23. }
  24. else if (divObj.mozRequestFullScreen) {
  25. divObj.mozRequestFullScreen();
  26. }
  27. else if (divObj.msRequestFullScreen) {
  28. divObj.msRequestFullScreen();
  29. }
  30. }, false);
  31. // 退出全屏显示
  32. document.querySelector("#btn2").addEventListener("click", function () {
  33. if (document.cancelFullscreen) {
  34. document.cancelFullscreen();
  35. }
  36. else if (document.webkitCancelFullScreen) {
  37. document.webkitCancelFullScreen();
  38. }
  39. else if (document.mozCancelFullScreen) {
  40. document.mozCancelFullScreen();
  41. }
  42. else if (document.msCancelFullScreen) {
  43. document.msCancelFullScreen();
  44. }
  45. }, false);
  46. // 是否是全屏状态
  47. document.querySelector("#btn3").addEventListener("click", function () {
  48. if (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement) {
  49. console.log("yes");
  50. }
  51. else {
  52. console.log("no");
  53. }
  54. }, false);
  55. </script>
  56. </body>
  57. </html>

三、应用程序缓存

主要应用在:当离线模式下,页面需要选择性缓存一些内容的时候。

  1. <!DOCTYPE html>
  2. <!--manifest="应用程序缓存清单文件的路径 建议文件的扩展名是appcache,这个文件的本质就是一个文本文件"-->
  3. <html lang="en" manifest="demo.appcache">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. <style>
  8. img{
  9. width: 300px;
  10. display: block;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <img src="../images/l1.jpg" alt="">
  16. <img src="../images/l2.jpg" alt="">
  17. <img src="../images/l3.jpg" alt="">
  18. <img src="../images/l4.jpg" alt="">
  19. </body>
  20. </html>

demo.appcache 文件

  1. CACHE MANIFEST
  2. #上面一句代码必须是当前文档的第一句
  3. #后面写注释
  4. #需要缓存的文件清单列表
  5. CACHE:
  6. #下面就是需要缓存的清单列表
  7. ../images/l1.jpg
  8. ../images/l2.jpg
  9. # *:代表所有文件
  10. #配置每一次都需要重新从服务器获取的文件清单列表
  11. NETWORK:
  12. ../images/l3.jpg
  13. #配置如果文件无法获取则使用指定的文件进行替代
  14. FALLBACK:
  15. ../images/l4.jpg ../images/banner_1.jpg
  16. # /:代表所有文件

四、文件读取接口

FileReader:主要是读取文件内容。

使用 new FileReader 生成的对象有下列几个方法,用于读取文件:

  • readAsText():读取文本文件,返回文本字符串,默认编码是UTF-8

  • readAsBinaryString():读取任意类型的文件,返回二进制字符串。这个方法不是用来读取文件展示给用户看,而是存储文件。例如:读取文件的内容,获取二进制数据,传递给后台,后台接收了数据之后,再将数据存储。

  • readAsDataURL():读取文件获取一段以data开头的字符串,这段字符串的本质就是DataURL。

    DataURL是一种将文件(这个文件一般就是指图像或者能够嵌入到文档的文件格式)嵌入到文档的一种格式。DataURL是将资源转换为base64编码的字符串形式,并且将这些内容直接存储在url中,这样做可以优化网站的加载速度和执行效率。

  • abort():中断文件读取。

比如现在有一需求,选择图片并实时显示(类似在网页上更换头像,可以实时预览图片):

  1. <body>
  2. <!--需求:即时预览:
  3. 即时:当用户选择完图片之后就立刻进行预览的处理 >>onchange
  4. 预览:通过文件读取对象的readAsDataURL()完成-->
  5. <form action="">
  6. 文件: <input type="file" name="myFile" id="myFile" onchange="getFileContent();"> <br>
  7. <div></div>
  8. <input type="submit">
  9. </form>
  10. <img src="" alt="">
  11. <script>
  12. var div=document.querySelector("div");
  13. function getFileContent(){
  14. /*1.创建文件读取对象*/
  15. var reader=new FileReader();
  16. /*2.读取文件,获取DataURL
  17. * 2.1.说明没有任何的返回值:void:但是读取完文件之后,它会将读取的结果存储在文件读取对象的result中
  18. * 2.2.需要传递一个参数(binary large object):文件(图片或者其它可以嵌入到文档的类型)
  19. * 2.3:文件存储在file表单元素的files属性中,它是一个数组,当有 multiple 属性的时候这个数组的值会有多个。*/
  20. var file=document.querySelector("#myFile").files[0];
  21. reader.readAsDataURL(file);
  22. /*获取数据*/
  23. /*FileReader提供一个完整的事件模型,用来捕获读取文件时的状态
  24. * onabort:读取文件中断片时触发
  25. * onerror:读取错误时触发
  26. * onload:文件读取完成且成功时触发
  27. * onloadend:文件读取完成时触发,无论成功还是失败
  28. * onloadstart:开始读取时触发
  29. * onprogress:读取文件过程中持续触发*/
  30. reader.onload=function(){
  31. //console.log(reader.result);
  32. /*展示*/
  33. document.querySelector("img").src=reader.result;
  34. }
  35. // 模拟进度条显示
  36. reader.onprogress=function(e){
  37. var percent= (e.loaded/ e.total)*100+"%";
  38. div.style.width=percent;
  39. }
  40. }
  41. </script>
  42. </body>

onchange:就是当文件内容发生变化时触发的事件。

五、地理定位接口

方法:

  1. // 参数1:获取地理信息成功之后的回调函数
  2. // 参数2:获取地理信息失败之后的回调函数
  3. // 参数3:调整获取当前地理信息的方式
  4. // enableHighAccuracy:true/false:是否使用高精度
  5. // timeout:设置超时时间,单位ms
  6. // maximumAge:可以设置浏览器重新获取地理信息的时间间隔,单位是ms
  7. navigator.geolocation.getCurrentPosition(success,error,option);

示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .de {
  8. width: 300px;
  9. height: 300px;
  10. border: 1px solid #ddd;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <div id="demo" class="de"></div>
  16. <script>
  17. var x = document.getElementById("demo");
  18. function getLocation() {
  19. /*能力测试*/
  20. if (navigator.geolocation) {
  21. navigator.geolocation.getCurrentPosition(showPosition, showError, {
  22. /*enableHighAccuracy:true,
  23. timeout:3000*/
  24. });
  25. }
  26. else {
  27. x.innerHTML = "Geolocation is not supported by this browser.";
  28. }
  29. }
  30. /*成功获取定位之后的回调*/
  31. function showPosition(position) {
  32. x.innerHTML = "Latitude: " + position.coords.latitude +
  33. "<br />Longitude: " + position.coords.longitude;
  34. }
  35. /*获取定位失败之后的回调*/
  36. function showError(error) {
  37. switch (error.code) {
  38. case error.PERMISSION_DENIED:
  39. x.innerHTML = "User denied the request for Geolocation."
  40. break;
  41. case error.POSITION_UNAVAILABLE:
  42. x.innerHTML = "Location information is unavailable."
  43. break;
  44. case error.TIMEOUT:
  45. x.innerHTML = "The request to get user location timed out."
  46. break;
  47. case error.UNKNOWN_ERROR:
  48. x.innerHTML = "An unknown error occurred."
  49. break;
  50. }
  51. }
  52. getLocation();
  53. </script>
  54. </body>
  55. </html>

获取地理位置成功,将会把获取到的地理信息以参数的形式传递给回调函数:

position.coords.latitude 纬度

position.coords.longitude 经度

position.coords.accuracy 精度

position.coords.altitude 海拔高度

注意:由于地理位置属于用户的隐私信息,一般浏览器不允许获取,只有在浏览器中开启之后才能够获取。然而,在中国使用PC端的浏览器是不允许获取到用户的信息的,手机端可以。

那么怎么在PC端的浏览器获取到用户的位置信息呢?

调用百度地图,高德地图等第三方提供的API接口获取用户信息。

从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存的更多相关文章

  1. 从零开始学 Web 之 HTML5(一)HTML5概述,语义化标签

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. 从零开始学 Web 之 HTML5(四)拖拽接口,Web存储,自定义播放器

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. js监听全屏下的esc事件

    window.onresize = function() { if (!checkFull()) { //触发esc事件,执行业务逻辑. } }; function checkFull() { var ...

  5. js监听全屏的事件

    window.addEventListener('click',function(){ window.top.location.href = '../../loginOut.do';  //解决ifr ...

  6. 从零开始学 Web 系列教程

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新…… github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http:/ ...

  7. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  8. 从零开始学 Web 之 HTML(三)表单

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  9. 从零开始学 Web 之 ES6(三)ES6基础语法一

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  2. 优化linux,安装node环境

    就是这样我的心爱的云主机就被攻击了,反正我是很久没宠幸过她,肯定不是我去攻击人家,但是吧昨天就突然来了封邮件,小白一个查不出什么,用了 netsat -na显示所有连接到服务器的活跃的网络连接数,发现 ...

  3. Spring Boot 启动(一) SpringApplication 分析

    Spring Boot 启动(一) SpringApplication 分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html ...

  4. Python之RabbitMQ的使用

    今天总结一下Python关于Rabbitmq的使用 RabbitMQ官网说明,其实也是一种队列,那和前面说的线程queue和进程queue有什么区别呢? 线程queue只能在同一个进程下进行数据交互 ...

  5. 深入理解JVM(二)Java内存区域

    2.1 C.C++内存管理是由开发人员管理,而Java则交给了JVM进行自动管理 2.2 JVM运行时数据区:方法区.堆(运行时线程共享),虚拟机栈.本地方法栈.程序计数器(运行时线程隔离,私有) 1 ...

  6. PowerDesigner 缺省值 引号 问题

    在使用PowerDesigner做为MySQL数据库建模的时候,总是有这样的问题,例如我需要一个字段 createTime 类型是 Timestamp,要求这个字段默认值为系统当前时间,于是我给这个字 ...

  7. ibatis (六) dynamic的用法

    view plain copy print? dynamic可以去除第一个prepend="and"中的字符(这里为and),从而可以帮助你实现一些很实用的功能.具体情况如下: 1 ...

  8. MFC禁用关闭按钮

    有时候我们在写MFC程序时,需要在对话框中开启线程处理一些事情,如果在线程执行过程中点击关闭按钮,会导致程序崩溃. 这里介绍一种解决方法,禁用关闭按钮 解决方法 开启线程前禁用关闭按钮 CMenu* ...

  9. input实现图片或视频上传(样式+代码)

    背景:vue/element.ui 1..html: <div v-show="recordForm.resourceType==1"> <el-form-ite ...

  10. 程序中使用now()函数对性能的影响

    这两天从某平台的慢查询日志中发现了一些很简单的,原本执行时间在0.01-0.03s的SQL,慢查询日志中记录的执行时间在2s左右. 排查后发现,表设计及索引建设均没有什么问题.但是SQL语句中使用了n ...