亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

Html5頁面中的返回實現的方法

2024-08-26 00:20:27
字體:
來源:轉載
供稿:網友

看到這個題目你可能覺得這是什么鬼? 其實我想說的是這種,看下面的錄制:

Html5頁面返回,Html5實現頁面返回

這種交互在H5頁面中比比皆是,點擊城市->彈出城市選擇浮層->按返回按鈕關閉浮層。

這些操作都是不要點擊左上角/右上角的關閉按鈕就可以進行的,飛豬的H5是前進出現彈層,返回時彈層關閉,其他家都不行(去哪兒網H5飛機票,美團H5酒店)。

為什么要這么設計?

因為H5是在手機上操作的,手機上的手指可操作區域的覆蓋范圍很小,更別說左上角/右上角這些死角(取消/關閉)區域了。你肯定聽過這個操作:輕觸返回。這個在用戶操作的時候非常方便友好,選擇完城市后,不需要點擊取消,直接在大拇指可以操作的地方點擊返回就關閉了彈層。

如何實現

既然有這種非常好的需求,那作為開發肯定就會想法設法的實現這個功能了。 你甚至都不用google,你就應該會想到類似的history.back(),history.go()這些方法了。 然而想到這些依舊沒用,理論上 瀏覽器/webview 的返回/前進的是要重新加載頁面的,因為URL發生了變化。 如果你真的知道單頁面應用(SPA),或者使用React/Vue你就應該知道有個東西叫:路由。 這些通過改變hash且無法刷新的url變化是HTML5時加入的history功能

the-history-interface

interface History {  readonly attribute unsigned long length;  attribute ScrollRestoration scrollRestoration;  readonly attribute any state;  void go(optional long delta = 0);  void back();  void forward();  void pushState(any data, DOMString title, optional DOMString? url = null);  void replaceState(any data, DOMString title, optional DOMString? url = null);};
  1. pushState
  2. replaceState

還有一個事件

  1. onpopstate

pushState,replaceState 用來改變histroy堆棧順序,onpopstate 在返回,前進的時候觸發

vue-router中的實現也是如此(第1694行)

具體實現

既然說了這么多,那我們來看下怎么實現這種功能。

來看下 pushState 和 replaceState 的兼容性

Html5頁面返回,Html5實現頁面返回

全綠,用起來放心多了。

思路:

  1. 點擊彈層時 pushState 添加 hash
  2. "輕觸返回"的時候觸發 onpopstate 事件時候隱藏彈層并修改 hash
<button onclick="city()">        城市    </button><br>    <button onclick="calendar()">        日歷    </button><br>    <button onclick="description()">        說明    </button>    <div id="city" class="com" style="display: none;">      模擬城市彈框層    </div>    <div id="calendar" class="com" style="display: none;">      模擬日歷彈框層    </div>     <div id="description" class="com" style="display: none;">      模擬說明彈框層    </div>
      button {          border: #0000;          background-color: #f90;      }      .com {        position: absolute ;        top: 0;        bottom: 0;        left: 0;        right: 0;        background-color: #888589;      }
var cityNode = document.getElementById('city');    var calendarNode = document.getElementById('calendar');    var descriptionNode = document.getElementById('description');      function city() {        cityNode.style.display = 'block';        window.history.pushState({'id':'city'},'','#city')      }      function calendar() {        calendarNode.style.display = 'block';        window.history.pushState({'id':'calendar'},'','#calendar')      }      function description() {        descriptionNode.style.display = 'block';        window.history.pushState({'id':'description'},'','#description')      }      window.addEventListener('popstate', function(e){        // alert('state:' + e.state + ', historyLength:' + history.length);        if (e.state && e.state.id === 'city') {            history.replaceState('','','#');            cityNode.style.display = 'block';        } else if (e.state && e.state.id === 'calendar') {            history.replaceState('','','#');            calendarNode.style.display = 'block';        } else if (e.state && e.state.id === 'description') {            history.replaceState('','','#');            descriptionNode.style.display = 'block';        } else {            cityNode.style.display = 'none';            calendarNode.style.display = 'none';            descriptionNode.style.display = 'none';        }      })

主要看 JS 代碼,監聽頁面的前進和后退事件來控制history。

Html5頁面返回,Html5實現頁面返回

源碼在此

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。

 

注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕综合在线| 欧美精品videossex88| 亚洲天堂网站在线观看视频| 91精品免费久久久久久久久| 亚洲无限av看| 欧美韩国理论所午夜片917电影| 国产精品美女久久久久av超清| 亚洲区在线播放| 国产v综合ⅴ日韩v欧美大片| 一本色道久久88综合日韩精品| 色天天综合狠狠色| 奇米成人av国产一区二区三区| 亚洲护士老师的毛茸茸最新章节| 在线看欧美日韩| 5252色成人免费视频| 亚洲精品免费网站| 亚洲最大的免费| 久久久99免费视频| 国产成人鲁鲁免费视频a| 国产精品久久久久久久久久东京| 国产精品av免费在线观看| 成人妇女淫片aaaa视频| 91精品国产乱码久久久久久久久| 91精品国产91久久| 91九色视频导航| 欧美成人激情图片网| 久久久国产精品免费| 大量国产精品视频| 国产精品久久久久久久久免费| 亚洲精品国产电影| 国产日韩欧美在线视频观看| 久久伊人精品视频| 91精品国产精品| 成人情趣片在线观看免费| 亚洲性猛交xxxxwww| 亚洲四色影视在线观看| 日韩不卡在线观看| 成人激情春色网| 国产成人精品优优av| 亚洲欧美日韩高清| 欧美一级片一区| 91在线观看免费| 欧美孕妇毛茸茸xxxx| 国产精品偷伦免费视频观看的| 97久久伊人激情网| 日本高清不卡的在线| 欧美高清理论片| 欧美一级高清免费| 美女福利视频一区| 久久免费国产精品1| 欧美日韩第一视频| 久久精品免费电影| 中文字幕综合一区| 日韩在线观看av| 尤物九九久久国产精品的特点| 成人动漫网站在线观看| 亚洲一区中文字幕| 国产欧美精品一区二区| 国产精品久久色| 欧美精品一区二区三区国产精品| 国产一区玩具在线观看| 色悠悠国产精品| 成人黄色免费看| 亚洲www永久成人夜色| 久久亚洲私人国产精品va| 久久久噜噜噜久久中文字免| 成人有码在线视频| 亚洲自拍偷拍色图| 欧美激情一区二区三区在线视频观看| 国产主播喷水一区二区| 欧美黄网免费在线观看| 欧美放荡办公室videos4k| 精品久久在线播放| 韩国精品美女www爽爽爽视频| 亚洲第一页在线| 日韩精品日韩在线观看| 国产一区二区三区毛片| 亚洲国产一区二区三区四区| 国产成人精品午夜| 成人免费视频xnxx.com| 亚洲女人天堂网| 91精品国产91久久久久久吃药| 亚洲国产日韩精品在线| 国产在线观看一区二区三区| 国产男人精品视频| zzijzzij亚洲日本成熟少妇| 久久夜色精品国产欧美乱| 久久国产精品久久精品| 国产精品日韩av| 欧美在线视频网站| 91国内揄拍国内精品对白| 高潮白浆女日韩av免费看| 亚洲精品www| 97在线视频免费看| 欧美插天视频在线播放| 国产精品旅馆在线| 国产一区二区三区网站| 777午夜精品福利在线观看| 日韩在线视频观看| 国产精品∨欧美精品v日韩精品| 韩剧1988在线观看免费完整版| 26uuu久久噜噜噜噜| 色悠久久久久综合先锋影音下载| 91国自产精品中文字幕亚洲| 久久伊人精品天天| 欧美黑人极品猛少妇色xxxxx| 韩国精品久久久999| 欧美性理论片在线观看片免费| 精品国产一区二区三区在线观看| 午夜精品久久久久久久白皮肤| 精品国产乱码久久久久久婷婷| 久久精品视频中文字幕| 久久成人综合视频| 高清日韩电视剧大全免费播放在线观看| 精品亚洲精品福利线在观看| 久久久久久久久久av| 色在人av网站天堂精品| 91福利视频网| 午夜精品久久久久久久白皮肤| 日韩一区二区av| 韩国国内大量揄拍精品视频| 亚洲色在线视频| 欧美激情一区二区三区在线视频观看| 成人精品一区二区三区电影黑人| 欧美性生交xxxxxdddd| 在线视频免费一区二区| 91在线免费观看网站| 久久精品2019中文字幕| 在线性视频日韩欧美| 日韩精品在线免费观看| 国色天香2019中文字幕在线观看| 欧美在线视频一二三| 精品视频在线观看日韩| 欧美一级大胆视频| 日韩av片永久免费网站| 欧美乱大交xxxxx另类电影| 久久天天躁狠狠躁夜夜爽蜜月| 中文字幕综合一区| 91成人免费观看网站| 亚洲国产女人aaa毛片在线| 精品一区二区三区四区在线| 欧美日韩一区二区在线播放| 欧美国产日本高清在线| 国产精品www色诱视频| 在线观看成人黄色| 欧美日韩国产精品专区| 亚洲香蕉成人av网站在线观看| 日韩毛片在线观看| 精品中文字幕在线2019| 亚洲国模精品一区| 欧美另类在线观看| 久久艹在线视频| 亚洲成人黄色在线| 精品日韩中文字幕| 亚洲欧美国产一本综合首页| 高清一区二区三区日本久| 国产一区二区成人| 亚洲国产精品小视频| 亚洲性69xxxbbb| 日韩欧美a级成人黄色| 色偷偷av亚洲男人的天堂| 国产精品综合不卡av| 日韩成人性视频| 国产精品xxxxx|