第89天:HTML5中 访问历史、全屏和网页存储API

简介: 一、访问历史 API通过history对象实现前进、后退和刷新之类的操作history新增的两个方法history.replaceState()和history.pushState()方法属于HTML5浏览器新增的属性,所以IE9以下的是不支持的。

一、访问历史 API

通过history对象实现前进、后退和刷新之类的操作

history新增的两个方法history.replaceState()history.pushState()方法属于HTML5浏览器新增的属性,所以IE9以下的是不支持的。

1、history.replaceState() ;顾名思义就是替换的意思,所以它的作用就是替换当前地址栏的url

history.replaceState(data,"页面的title","需要改变的url") ;接收三个参数

2、history.pushState() ;看到push大家首先应该想到的是数组,没错,这个方法就是往浏览器的history里压入一条url,就像数据结构里的栈一样,这个压入的url会在栈

的最顶端,当你点击浏览器的前进或者倒退按钮时,便会拿出栈顶的url来定位,从而达到改变history的作用但是并不刷新!

3、popstate事件

当history实体被改变时,popstate事件将会发生。如果history实体是有pushState和replaceState方法产生的,popstate事件的state属性会包含一份来自history实体的state对象的拷贝

4、读取当前的state

当页面加载时,它可能会有一个非空的state对象。这可能发生在当页面设置一个state对象(使用pushState或者replaceState)之后用户重启了浏览器。当页面重新加载,页面将收到onload事件,但不会有popstate事件。然而,如果你读取history.state属性,将在popstate事件发生后得到这个state对象

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>history API</title>
 6     <style>
 7         html,body{
 8             height: 100%;
 9             overflow: hidden;
10             margin: 0;
11             padding: 0;
12         }
13         aside{
14             background-color: #c0c0c0;
15             width: 220px;
16             float: left;
17             height: 100%;
18         }
19         aside ul{
20             font-size: 20px;
21             line-height: 2;
22         }
23         aside ul li{
24             cursor: pointer;
25         }
26         article{
27             background-color: #f5f5f5;
28             margin-left: 220px;
29             padding: 20px;
30             overflow: scroll;
31             height: 100%;
32             width: 300px;
33             font-size: 20px;
34         }
35     </style>
36 </head>
37 <body>
38     <aside>
39         <ul id="list"></ul>
40     </aside>
41     <article>
42         <p id="content"></p>
43     </article>
44 </body>
45 <script src="data.js"></script>
46 <script>
47     (function(){
48         var listElement=document.querySelector('#list');
49         for(var title in data){
50             var liElement=document.createElement('li');
51             liElement.innerHTML=title;
52             liElement.setAttribute('data-title',title);//自定义属性
53             listElement.appendChild(liElement);
54         }
55         var liElements=document.querySelectorAll('#list>li');
56         var content=document.querySelector('#content');
57         //注册每一个元素事件
58         for(var i=0;i<liElements.length;i++){
59             liElements[i].addEventListener('click',function(){
60                 //拿到被点击元素的名字 title
61                 var title=this.dataset['title'];//通过dataset获取
62                 content.innerHTML=data[title];//赋值
63                 //操作历史记录
64                 if(window.history&&history.pushState){
65                     //添加一个新的历史记录
66                    history.pushState(title,'title没有任何浏览器支持','?t='+title);
67                 }else{
68                     console.log('不支持');
69                 }
70             });
71         }
72         //当我们在伪造访问历史中前进或后退时会执行一个popstate事件
73         window.addEventListener('popstate',function(e){
74             content.innerHTML=data[e.state];
75         });
76         //window.location="http://www.baidu.com";
77         //第一次请求过来 获取地址栏中的t参数
78         var title=window.location.search.split('=')[1];//用=分割
79         if(title){//有值
80             console.log(decodeURI(title));//decodeURI 从URL编码转换到之前的状态
81             content.innerHTML=data[decodeURI(title)];
82         }
83     })();
84 </script>
85 </html>

二、全屏显示 API

requestFullScreen();全屏显示方法

 1 <script>
 2     (function(){
      //点击图片让网页全屏显示
3 var img=document.querySelector('#img_full'); 4 img.addEventListener('click',function(e){ 5 if(document.body.webkitRequestFullScreen){//谷歌 6 document.body.webkitRequestFullScreen(); 7 }else if(document.body.mozRequestFullScreen){//火狐 8 document.body.mozRequestFullScreen(); 9 }else{ 10 document.body.requestFullScreen();//其他 11 e.preventDefault(); 12 } 13 14 }); 15 //点击h3标签,让p标签里的内容全屏展示 16 var h3=document.querySelector('#title_1'); 17 var p=document.querySelector('#content_1'); 18 h3.addEventListener('click',function(e){ 19 if(p.webkitRequestFullScreen){ 20 p.webkitRequestFullScreen(); 21 } 22 }) 23 })() 24 25 </script>

三、网页存储

  1. Application Cache 让网页离线访问的技术
  2. getItem方式获取一个不存在的键 ,返回空字符串   
    txtValue.value = localStorage.getItem('key1');
  3. []方法 返回undefined  
    txtValue.value = localStorage['key1'];
 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <title>Web Storage</title>
 7   <meta name="author" content="汪磊">
 8 </head>
 9 
10 <body>
11   <div>
12     <textarea id="txt_value" cols="80" rows="10"></textarea>
13   </div>
14   <button id="btn_set">存储</button>
15   <button id="btn_get">读取</button>
16   <script>
17     if (!window.localStorage) {
18       alert('不支持LocalStorage');
19     } else {
20       var btnSet = document.querySelector('#btn_set');//获取按钮
21       var btnGet = document.querySelector('#btn_get');
22       var txtValue = document.querySelector('#txt_value');
23       btnGet.addEventListener('click', function() {
24         // txtValue.value = localStorage.getItem('key1');
25         txtValue.value = localStorage['key1'];//会话用sessionStorage
26       });
27       btnSet.addEventListener('click', function() {
28         // localStorage.setItem('key1', txtValue.value);
29         localStorage['key1'] = txtValue.value;
30       });
31     }
32   </script>
33 </body>
34 
35 </html>

 

相关文章
|
2月前
|
存储 Web App开发 移动开发
HTML5 Web 存储详解
HTML5 Web存储提供了两种客户端数据存储机制:**Local Storage**和**Session Storage**。Local Storage用于长期存储数据,即使关闭浏览器数据也依然存在,适用于保存用户偏好设置等信息。Session Storage则在标签或窗口关闭时清除数据,适合存储临时信息。两者均提供了简单的API进行数据的存取操作,但需要注意的是,Web存储并非加密存储,不应存放敏感信息。现代浏览器普遍支持Web存储,合理利用这两种存储方式可提升Web应用的用户体验。
|
2月前
|
存储 移动开发 前端开发
HTML基础知识:构建网页的基石
【10月更文挑战第11天】HTML基础知识:构建网页的基石
129 0
|
4天前
|
数据采集 前端开发 数据挖掘
利用 html_table 函数轻松获取网页中的表格数据
本文介绍了如何使用 R 语言中的 `html_table` 函数结合代理 IP 技术,轻松提取网页表格数据并规避反爬机制。通过设置代理和请求头,示例代码展示了如何从 58 同城采集租房信息并保存为 CSV 文件。该方法适用于需要频繁采集数据的场景,确保数据采集的高效和稳定性。
利用 html_table 函数轻松获取网页中的表格数据
|
3月前
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
3月前
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)
|
2月前
|
数据安全/隐私保护 C++
【HTML】构建网页的基石
本文介绍了HTML的基本概念和常用标签,包括HTML文件的基本结构、常见标签(如标题、段落、换行、图片、超链接等)、表格与表单的使用方法,以及无语义标签div和span的特性。通过具体示例展示了如何在VS Code中快速生成HTML框架及各标签的应用场景,帮助初学者快速掌握HTML的基础知识。
54 1
【HTML】构建网页的基石
|
2月前
|
存储 移动开发 缓存
HTML5 Web 存储详解
HTML5 Web 存储包括 `localStorage` 和 `sessionStorage`,前者提供持久存储且无过期时间,后者仅在会话期间有效。两者均支持键值对形式存储数据,容量约为 5-10 MB。`localStorage` 适用于用户偏好设置、登录状态保持及离线应用缓存;`sessionStorage` 则用于临时数据如表单输入。数据以字符串形式存储,可通过 `JSON` 方法处理对象。由于数据存储于本地,不适合存放敏感信息。示例代码展示了如何使用按钮将输入框内容保存至 `localStorage` 并进行清除操作。
|
3月前
|
存储 移动开发 搜索推荐
HTML5 常用存储类型
HTML5 常用存储类型
|
3月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
3月前
|
移动开发 前端开发 数据挖掘
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
用HTML5中的 画布(Canvas)在“圳品”信息系统网页上绘制显示饼图
下一篇
DataWorks