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

首頁 > 開發 > HTML5 > 正文

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

2024-09-05 07:22:23
字體:
來源:轉載
供稿:網友

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

這種交互在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 的兼容性

全綠,用起來放心多了。

思路:

  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。

源碼在此

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美激情在线视频| 伊人久久男人天堂| 26uuu亚洲伊人春色| 久热在线中文字幕色999舞| 久久亚洲综合国产精品99麻豆精品福利| 久久久久久久久久久成人| 国产亚洲精品久久久久久| 色爱av美腿丝袜综合粉嫩av| 日本高清+成人网在线观看| 亚洲精品久久久久久久久久久久| 久久青草福利网站| 欧美午夜激情小视频| 日韩经典中文字幕在线观看| 欧美二区在线播放| 中文字幕欧美视频在线| 日韩成人免费视频| 亚洲成人网久久久| 国产丝袜精品视频| 亚洲美女性视频| 国产成一区二区| 自拍偷拍亚洲一区| 在线观看国产精品日韩av| 日韩免费观看网站| 91精品国产自产91精品| 欧美乱大交做爰xxxⅹ性3| 97超视频免费观看| 日韩av在线直播| 亚洲国产精品大全| 国产精品高潮粉嫩av| 亚洲经典中文字幕| 国产精品成久久久久三级| 国产香蕉97碰碰久久人人| 国产成人久久久| 最近2019中文免费高清视频观看www99| 日韩精品中文字幕在线| 欧美激情一二区| 日日骚av一区| 国产精品久久久久国产a级| 国产成人啪精品视频免费网| 91产国在线观看动作片喷水| 成人av.网址在线网站| 4438全国亚洲精品在线观看视频| 日韩亚洲欧美中文高清在线| 国产精品盗摄久久久| 国产91色在线播放| 成人免费网视频| 亚洲男人av电影| 欧美丰满少妇xxxxx| 91视频免费网站| 国产成人精品一区二区三区| 国产大片精品免费永久看nba| 欧美激情一二区| 欧美性极品xxxx做受| 久久视频中文字幕| 精品久久久免费| 欧美精品亚州精品| 亚洲精品一区av在线播放| 日韩av在线免费| 亚洲黄色av女优在线观看| 成人黄色生活片| 国产精品精品久久久| 免费91在线视频| 精品激情国产视频| 国产激情久久久久| 91精品国产精品| 一区二区三区四区在线观看视频| 成人夜晚看av| 精品国内自产拍在线观看| 久久成人这里只有精品| 久久免费少妇高潮久久精品99| 亚洲性线免费观看视频成熟| 国产精品九九久久久久久久| 亚洲精品免费av| 7m第一福利500精品视频| 欧美怡春院一区二区三区| 国产精品偷伦免费视频观看的| 日本精品视频在线| 亚洲日韩欧美视频| 激情av一区二区| 亚洲国产精品美女| 亚洲美女在线看| 亚洲夜晚福利在线观看| 国产日韩在线看| 欧美精品在线免费| 亚洲国产精品久久久久秋霞不卡| 国产盗摄xxxx视频xxx69| 日韩av中文字幕在线| 理论片在线不卡免费观看| 欧美精品videosex牲欧美| 日韩av电影在线播放| 亚洲伦理中文字幕| 精品香蕉一区二区三区| 国产精品自产拍在线观看中文| 成人黄色午夜影院| 日韩男女性生活视频| 91精品国产高清自在线| 亚洲va码欧洲m码| 91黑丝高跟在线| 日本精品一区二区三区在线| 亚洲二区在线播放视频| 久久精品99久久香蕉国产色戒| 国产视频在线一区二区| 色yeye香蕉凹凸一区二区av| 亚洲精品国产精品自产a区红杏吧| 国产精品jizz在线观看麻豆| 97在线视频观看| 亚洲xxxx妇黄裸体| 精品国产欧美一区二区三区成人| 欧美人在线视频| 久久久爽爽爽美女图片| 亚洲欧美国产精品| 成人国产精品一区| 国产日韩中文字幕在线| 日韩网站免费观看高清| 久久香蕉国产线看观看av| 久久久噜久噜久久综合| 亚洲精品自产拍| 精品久久久久久电影| 最近2019中文字幕一页二页| 日韩精品中文字幕在线| 亚洲人成电影网站色| 亚洲国产精品网站| 亚洲成人a级网| 国产精品h片在线播放| 欧美日韩亚洲成人| 亚洲精品日韩在线| 九色精品免费永久在线| 3344国产精品免费看| 久久久99免费视频| 国产精品激情av电影在线观看| 中文字幕欧美亚洲| zzijzzij亚洲日本成熟少妇| xxxx性欧美| 亚洲aaa激情| 久久综合亚洲社区| 久久久视频免费观看| 国产欧美日韩精品在线观看| 5566日本婷婷色中文字幕97| 亚洲精品一区久久久久久| 欧美精品国产精品日韩精品| 国模视频一区二区三区| 亚洲乱码国产乱码精品精天堂| 国产成人久久久精品一区| 欧美日韩不卡合集视频| 2020久久国产精品| 久久午夜a级毛片| 视频直播国产精品| 亚洲精品91美女久久久久久久| 亚洲天堂av在线免费观看| 国产丝袜精品第一页| 亚洲欧洲国产一区| 欧美尺度大的性做爰视频| 国产精品久久久| 久久99久久久久久久噜噜| 国产一区二区三区毛片| 欧美性少妇18aaaa视频| 久久免费观看视频| 亚洲一区二区在线| 欧美精品免费看| 日韩中文字幕在线视频| 国产成人亚洲精品| 中文字幕日韩高清| 国产精品偷伦视频免费观看国产| 欧美性猛交xxxxx免费看|