真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Html5頁(yè)面中如何實(shí)現(xiàn)返回

小編給大家分享一下Html5頁(yè)面中如何實(shí)現(xiàn)返回,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、新河網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、新河網(wǎng)絡(luò)營(yíng)銷、新河企業(yè)策劃、新河品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供新河建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

看到這個(gè)題目你可能覺得這是什么鬼? 其實(shí)我想說(shuō)的是這種,看下面的錄制:

Html5頁(yè)面中如何實(shí)現(xiàn)返回

這種交互在H5頁(yè)面中比比皆是,點(diǎn)擊城市->彈出城市選擇浮層->按返回按鈕關(guān)閉浮層。

這些操作都是不要點(diǎn)擊左上角/右上角的關(guān)閉按鈕就可以進(jìn)行的,飛豬的H5是前進(jìn)出現(xiàn)彈層,返回時(shí)彈層關(guān)閉,其他家都不行(去哪兒網(wǎng)H5飛機(jī)票,美團(tuán)H5酒店)。

為什么要這么設(shè)計(jì)?

因?yàn)镠5是在手機(jī)上操作的,手機(jī)上的手指可操作區(qū)域的覆蓋范圍很小,更別說(shuō)左上角/右上角這些死角(取消/關(guān)閉)區(qū)域了。你肯定聽過(guò)這個(gè)操作:輕觸返回。這個(gè)在用戶操作的時(shí)候非常方便友好,選擇完城市后,不需要點(diǎn)擊取消,直接在大拇指可以操作的地方點(diǎn)擊返回就關(guān)閉了彈層。

如何實(shí)現(xiàn)

既然有這種非常好的需求,那作為開發(fā)肯定就會(huì)想法設(shè)法的實(shí)現(xiàn)這個(gè)功能了。 你甚至都不用google,你就應(yīng)該會(huì)想到類似的history.back(),history.go()這些方法了。 然而想到這些依舊沒用,理論上 瀏覽器/webview 的返回/前進(jìn)的是要重新加載頁(yè)面的,因?yàn)閁RL發(fā)生了變化。 如果你真的知道單頁(yè)面應(yīng)用(SPA),或者使用React/Vue你就應(yīng)該知道有個(gè)東西叫:路由。 這些通過(guò)改變hash且無(wú)法刷新的url變化是HTML5時(shí)加入的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

還有一個(gè)事件

  1. onpopstate

pushState,replaceState 用來(lái)改變histroy堆棧順序,onpopstate 在返回,前進(jìn)的時(shí)候觸發(fā)

vue-router中的實(shí)現(xiàn)也是如此(第1694行)

具體實(shí)現(xiàn)

既然說(shuō)了這么多,那我們來(lái)看下怎么實(shí)現(xiàn)這種功能。

來(lái)看下 pushState 和 replaceState 的兼容性

Html5頁(yè)面中如何實(shí)現(xiàn)返回

全綠,用起來(lái)放心多了。

思路:

  1. 點(diǎn)擊彈層時(shí) pushState 添加 hash

  2. "輕觸返回"的時(shí)候觸發(fā) onpopstate 事件時(shí)候隱藏彈層并修改 hash


        城市
    
             日歷     
             說(shuō)明                 模擬城市彈框?qū)?     
           模擬日歷彈框?qū)?     
            模擬說(shuō)明彈框?qū)?     
  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 代碼,監(jiān)聽頁(yè)面的前進(jìn)和后退事件來(lái)控制history。

Html5頁(yè)面中如何實(shí)現(xiàn)返回

看完了這篇文章,相信你對(duì)“Html5頁(yè)面中如何實(shí)現(xiàn)返回”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享文章:Html5頁(yè)面中如何實(shí)現(xiàn)返回
轉(zhuǎn)載注明:http://weahome.cn/article/jppcoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部