成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

了解HTML?5?History?API的”前生今世”

History是有趣的,不是嗎?在之前的HTML版本中,我們對(duì)瀏覽歷史記錄的操作非常有限。我們可以來回使用可以使用的方法,但這就是一切我們能做的了。

  但是,利用HTML 5的History API,我們可以更好的控制瀏覽器的歷史記錄了。例如:我們可以添加一條記錄到歷史記錄的列表中,或者在沒有刷新時(shí),可以更新地址欄的URL。

  為什么介紹History API ?

  在這篇文章中,我們將了解HTML 5中History API的來源。在此之前,我們經(jīng)常使用散列值來改變頁面內(nèi)容,特別是那些對(duì)頁面特別重要的內(nèi)容。因?yàn)闆]有刷新,所以對(duì)于單頁面應(yīng)用,改變其URL是不可能的。此外,當(dāng)你改變URL的散列值值,它對(duì)瀏覽器的歷史記錄沒有任何影響。

  然后,現(xiàn)在對(duì)于HTML 5的History API來說,這些都是可以輕易實(shí)現(xiàn)的,但是由于單頁面應(yīng)用沒必要使用散列值,它可能需要額外的開發(fā)腳本。它也允許我們用一種對(duì)SEO友好的方式建立新應(yīng)用。此外,它能減少帶寬,但是該怎么證明呢?

  在文章中,我將用History API開發(fā)一個(gè)單頁應(yīng)用來證明上述的問題。

  這也意味著我必須先在首頁加載必要的資源。現(xiàn)在開始,頁面僅僅加載需要的內(nèi)容。換句話說,應(yīng)用并不是一開始就加載了全部的內(nèi)容,在請(qǐng)求第二個(gè)應(yīng)用內(nèi)容時(shí),才會(huì)被加載。

  注意,您需要執(zhí)行一些服務(wù)器端編碼只提供部分資源,而不是完整的頁面內(nèi)容。

  瀏覽器支持

  在寫這篇文章的時(shí)候,各主流瀏覽器對(duì)History API的支持是非常不錯(cuò)的,可以點(diǎn)擊此處查看其支持情況,這個(gè)鏈接會(huì)告訴你支持的瀏覽器,并使用之前,總有良好的實(shí)踐來檢測支持的特定功能。

  為了用變成方式確定瀏覽器是否支持這個(gè)API,可以用下面的一行代碼檢驗(yàn):

return !!(window.history && history.pushState);

  此外,我建議參考一下這篇文章:Detect Support for Various HTML5 Features.(ps:后續(xù)會(huì)翻譯)

  如果你是用的現(xiàn)代瀏覽器,可以用下面的代碼:

if (Modernizr.history) {      // History API Supported  }

  如果你的瀏覽器不支持History API,可以使用history.js代替。

  使用History

  HTML 5提供了兩個(gè)新方法:

  1、history.pushState(); 2、history.replaceState();

  兩種方法都允許我們添加和更新歷史記錄,它們的工作原理相同并且可以添加數(shù)量相同的參數(shù)。除了方法之外,還有popstate事件。在后文中將介紹怎么使用和什么時(shí)候使用popstate事件。

  pushState()replaceState()參數(shù)一樣,參數(shù)說明如下:

  1、state:存儲(chǔ)JSON字符串,可以用在popstate事件中。

  2、title:現(xiàn)在大多數(shù)瀏覽器不支持或者忽略這個(gè)參數(shù),最好用null代替

  3、url:任意有效的URL,用于更新瀏覽器的地址欄,并不在乎URL是否已經(jīng)存在地址列表中。更重要的是,它不會(huì)重新加載頁面。

  兩個(gè)方法的主要區(qū)別就是:pushState()是在history棧中添加一個(gè)新的條目,replaceState()是替換當(dāng)前的記錄值。如果你還對(duì)這個(gè)有迷惑,就用一些示例來證明這個(gè)區(qū)別。

  假設(shè)我們有兩個(gè)棧塊,一個(gè)標(biāo)記為1,另一個(gè)標(biāo)記為2,你有第三個(gè)棧塊,標(biāo)記為3。當(dāng)執(zhí)行pushState()時(shí),棧塊3將被添加到已經(jīng)存在的棧中,因此,棧就有3個(gè)塊棧了。

  同樣的假設(shè)情景下,當(dāng)執(zhí)行replaceState()時(shí),將在塊2的堆棧和放置塊3。所以history的記錄條數(shù)不變,也就是說,pushState()會(huì)讓history的數(shù)量加1.

  比較結(jié)果如下圖:

了解HTML?5?History?API的”前生今世”

  到此,為了控制瀏覽器的歷史記錄,我們忽略了pushState()replaceState()的事件。但是假設(shè)瀏覽器統(tǒng)計(jì)了許多的不良記錄,用戶可能會(huì)被重定向到這些頁面,或許也不會(huì)。在這種情況下,當(dāng)用戶使用瀏覽器的前進(jìn)和后退導(dǎo)航按鈕時(shí)就會(huì)產(chǎn)生意外的問題。

  盡管當(dāng)我們使用pushState()replaceState()進(jìn)行處理時(shí),期待popstate事件被觸發(fā)。但實(shí)際上,情況并不是這樣。相反,當(dāng)你瀏覽會(huì)話歷史記錄時(shí),不管你是點(diǎn)擊前進(jìn)或者后退按鈕,還是使用history.go和history.back方法,popstate都會(huì)被觸發(fā)。

  In WebKit browsers, a popstate event would be triggered after document’s onload event, but Firefox and IE do not have this behavior.(在WebKit瀏覽器中,popstate事件在document的onload事件后觸發(fā),F(xiàn)irefox和IE沒有這種行為)。

  Demo示例

  HTML:

<p class="container">      <p class="row">          <ul class="nav navbar-nav">              <li><a href="home.html" class="historyAPI">Home</a></li>              <li><a href="about.html" class="historyAPI">About</a></li>              <li><a href="contact.html" class="historyAPI">Contact</a></li>          </ul>      </p>      <p class="row">          <p class="col-md-6">              <p class="well">                  Click on Links above to see history API usage using <code>pushState</code> method.              </p>          </p>          <p class="row">                 <p class="jumbotron" id="contentHolder">                  <h1>Home!</h1>                  <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>              </p>          </p>      </p>  </p>

  JavaScript:

<script type="text/javascript">      jQuery('document').ready(function(){                     jQuery('.historyAPI').on('click', function(e){              e.preventDefault();              var href = $(this).attr('href');                             // Getting Content              getContent(href, true);                             jQuery('.historyAPI').removeClass('active');              $(this).addClass('active');          });                 });             // Adding popstate event listener to handle browser back button       window.addEventListener("popstate", function(e) {                     // Get State value using e.state          getContent(location.pathname, false);      });             function getContent(url, addEntry) {          $.get(url)          .done(function( data ) {                             // Updating Content on Page              $('#contentHolder').html(data);                             if(addEntry == true) {                  // Add History Entry using pushState                  history.pushState(null, null, url);              }                         });      }  </script>

  Demo 1:HTML 5 History API – pushState

  歷史條目在瀏覽器中被計(jì)算,并且可以很容易的使用瀏覽器的前進(jìn)和后退按鈕。View Demo (ps:你在點(diǎn)擊demo1的選項(xiàng)卡時(shí),其記錄會(huì)被添加到瀏覽器的歷史記錄,當(dāng)點(diǎn)擊后退/前進(jìn)按鈕時(shí),可以回到/跳到你之前點(diǎn)擊的選項(xiàng)卡對(duì)應(yīng)的頁面)

  Demo 2:HTML 5 History API – replaceState

  歷史條目在瀏覽器中被更新,并且不能使用瀏覽器的前進(jìn)和后退按鈕進(jìn)行瀏覽。View Demo (ps:你在點(diǎn)擊demo1的選項(xiàng)卡時(shí),其記錄會(huì)被替換當(dāng)前瀏覽器的歷史記錄,當(dāng)點(diǎn)擊后退/前進(jìn)按鈕時(shí),不可以回到/跳到你之前點(diǎn)擊的選項(xiàng)卡對(duì)應(yīng)的頁面,而是返回/跳到你進(jìn)入demo2的上一個(gè)頁面)

  總結(jié)(ps:喜歡這兩個(gè)字~~~^_^~~~)

  HTML 5中的History API 對(duì)Web應(yīng)用有著很大的影響。為了更容易的創(chuàng)建有效率的、對(duì)SEO友好的單頁面應(yīng)用,它移除了對(duì)散列值的依賴。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
亚洲欧洲AV综合一区二区三区| 疯狂做受XXXX高潮欧美日本| 狂躁美女BBBBBB视频| 同性男男黄网站在线观看国外| IPHONE欧美高级| 日本婷婷色色电影| 公么的大龟征服了我BD| 亚洲AV无码AV日韩AV网站不| 国产亚洲精品精华液| av网站免费观看| 人畜禽CORPORATION| 色噜噜狠狠色综合日日| 久久久久久国产精品免费无码| 欧美精产国品一二三类产品特点| 欧美丰满美乳XXⅩ高潮www| 日韩欧美午夜成人精品视频| 无遮挡十八禁污污网站免费| 亚洲精品嫩草研究院久久| 2021最新国产在线人成| 成长人短视频B站| 国内精品伊人久久久影视 | 日韩人妻无码一区二区三区| 香蕉免费一区二区三区在| 亚洲人午夜射精精品日韩| 50岁熟妇大白屁股真爽| 国产AV激情无码久久| 精品人妻无码一区二区色欲AⅤ| 成人午夜亚洲精品无码网站| 国产男男Gay做受ⅩXX高潮| 久久天天躁狠狠躁夜夜96流白浆| 欧洲无码一区二区三区在线观看| 无码AV片在线观看免费| 一本加勒比HEZYO中文无码| x88AV在线观看ww| 国产中文三级全黄| 欧美A片XⅩX黑人性受| 妺妺窝人体色WWW聚色窝仙踪 | 亚洲精品成人区在线观看 | 亚洲成在人线视AV| 9精产国品一二三产区| 国产AV永久精品无码| 久久九九日本韩国精品| 国产在线精品无码二区| 最新国产在线拍揄自揄视频| 色偷偷色噜噜狠狠网站久久| 精品一区二区三区在线成人| 大帝A∨无码视频在线播放| 在线看片无码永久免费AV| 玩弄人妻少妇500系列网址 | 国产亚洲精品视觉盛宴| 菠萝菠萝蜜在线观看| 亚洲中文无码a∨在线观看| 亚洲AV成人无码久久www小说| 色五月五月丁香亚洲综合网| 内射中出日韩无国产剧情| 精品少妇AY一区二区三区| 国产麻豆成人传媒免费观看| 触及真心在线观看| 啊灬啊灬啊灬快灬少妇软件| JEAⅠOUSVUE丰满少妇| 一区二区三区AV| 一边下奶一边吃面膜视频讲解图片| 亚洲精品亚洲人成在线观看| 四虎影视永久无码精品| 少妇高潮惨叫喷水在线观看 | 裸体丰满白嫩大尺度尤物 | 绯色AV一区二区三区3∪8| 亚洲精品天堂无码中文字幕| 香蕉久久人人97超碰CAOPR| 亚洲成在人线AV自拍| 把女的下面扒开添视频| 狠狠躁夜夜躁人人爽天天古典 | 美国五月婷婷毛片| 让人爽到湿的小黄书软件下载| 另类小说激情婷婷久久| 久久精品久久精品中文字幕| 免费人妻AV无码专区| 老师穿着旗袍肉色丝袜让我玩| 久久久亚洲熟妇熟女ⅩXXXHD| 久久精品无码中文字幕| 久久久久久中文字幕有精品| 人妻少妇一级毛片内射一牛影视 | 影音先锋成人无码影院| 国产精品亚洲А∨无码播放| 欧亚专线欧洲S码W MY| 一本一道人人妻人人妻| 国产在线拍揄自揄拍免费下载| 日韩精品人妻中文字幕有码| 14小箩洗澡裸体高清视频| 精品国产乱码久久久久久下载| 婷婷97狠狠色综合| 爱情岛亚洲AV永久入口首页| 美女裸体十八禁免费网站| 亚洲国产美女精品久久久久∴ | 亚洲AV成人无码精品综合网站 | 亚洲 欧美 国产 日韩 精品| 大号BBVVBBW高潮| 欧美三级在线播放| 在线 | 18精品免费1区2| 精品少妇人妻AV无码专区| 先の欲求不満な人妻无码| 乖我们在办公室试试| 日本厨房ⅩⅩⅩⅩⅩ乱| 7777色情XXXX欧美| 老牛天天晚上夜噜噜噜| 亚洲熟妇无码AV另类VR影视| 国内精品一线二线三线黄| 婷婷丁香六月激情综合啪| 成人片黄网站色大片免费观看| 欧美人妻AⅤ中文字幕| 重口00Ⅹ变态另类| 麻豆成人精品国产免费| 一本加勒比HEZYO无码资源网| 精品少妇一区二区| 亚洲成AV人片在线观看无下载 | 免费无遮挡无码H肉动漫在线观看| 亚洲最大无码成人网站4438| 精品无码一区二区三区| 亚洲国产精品成人无码区| 好爽好紧好大的免费视频国产| 午夜无码福利伦利理免| 国产精品无码2021在线观看| 玩弄人妻少妇500系列视频| 国产丰满饥渴老女人HD| 国产69精品久久久久观看软件| 久久AV高清无码| 免费人成在线观看| 中国丰满熟妇XXXX| 免费高清中文字幕MV| 中文国产成人精品久久不卡| 鲁一鲁AV2019在线| 最新中文字幕AV无码不卡| 女朋友喊疼男生的心理活动知乎 | 久久精品无码午夜福利理论片| 亚洲丰满少妇自摸| 精品亚洲A∨无码一区二区三区 | 三上悠亚AV影院在线看| YSL千人千色AE86V10| 国产未成女一区二区三区| 无码一区二区三区在线观看| 亚洲一区在线观看XXX| 交换配乱吟粗大SNS84O| 亚洲国产精品国自产拍电影| 精品国产乱码久久久久久郑州公司 | 天堂8在线天堂资源BT| 国产精品 视频一区 二区三区| 无码一区二区三区在线观看| 果冻传媒AⅤ毛片无码蜜桃| 亚洲精选无码久久久| 久久人人爽爽爽人久久久| 中文字幕一线产区和二线| 欧洲精品成人免费视频在线| 差差差无掩盖30分钟79集| 熟女人妇 成熟妇女系列视频| 国产精品无码AV片在线观看播放| 亚洲AV无码AV制服另类专区| 久久国产乱子精品免费女 | 亚洲А∨天堂男人色无码| 久久国产精品亚洲艾草网| 中文字幕一区二区三区乱码| 人妻人人做人碰人人添 | 久久久久久国产精品无码下载| 中文字幕在线不卡一区二区| 让人爽到湿的小黄书软件下载| 公和我做好爽添厨房在线观看| 喜爱夜蒲在线观看| 久久久久精品无码一区二区三区| 91久久精品www人人做人人爽| 日本国产网曝视频在线观看| 国产精品久久久久9999无码| 亚洲乱码1卡2卡3乱码在线芒果| 美女床上喷水在线观看| 成人免费A级毛片天天看| 小雪要撑破了黑人好大| 久久午夜伦鲁片免费无码| 99精品视频在线观看免费| 伊人久久大香线蕉AⅤ色| 青青草原精品99久久精品66| 国产精品WWW夜色视频| 正在播放重口老熟女露脸| 少妇自慰喷AV免费网站| 极品少妇高潮到爽| 草莓视频IOS下载| 日韩熟妇αv无码激情视频| 少妇激情一区二区三区视频| 国产AV人人夜夜澡人人爽| 亚洲国产制服丝袜先锋| 少妇白浆高潮无码免费区| 在厨房娇妻被朋友胯下挺进| 少妇被CAO高潮呻吟声| 人人做人人爽国产视| 免费无遮挡无码永久视频| 久久久久久久久久久综合日本| 国产一区二区三区不卡在线观看| XXXX18HD亚洲HD护士| 69无人区乱码一二三四区别| 无码一区二区三区AV免费蜜桃 | 中文字幕乱偷无码AV先锋| 日本适合十八岁以上的护肤品男| 精品三级久久久久电影我网|