最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談通過JS攔截 pushState和replaceState事件

 更新時間:2017年07月21日 08:01:53   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談通過JS攔截 pushState和replaceState事件。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

history.pushState 和 history.replaceState 可以在不刷新當(dāng)前頁面的情況下更改URL,但是這樣就無法獲取通過AJAX得到的新頁面的內(nèi)容了。

雖然各種HTML5文檔說 window.onpopstate 事件可以攔截 pushState 的消息,但在實(shí)際的測試中, onpopstate 根本沒有任何作用,無法攔截 pushState 的消息。

經(jīng)過Google一番,才找到了正確獲取 pushState 事件的代碼

https://stackoverflow.com/a/25673911

// Add this:
var _wr = function(type) {
  var orig = history[type];
  return function() {
    var rv = orig.apply(this, arguments);
    var e = new Event(type);
    e.arguments = arguments;
    window.dispatchEvent(e);
    return rv;
  };
};
history.pushState = _wr('pushState');
history.replaceState = _wr('replaceState');

// Use it like this:
window.addEventListener('pushState', function(e) {
  console.warn('THEY DID IT AGAIN!');
});
window.addEventListener('replaceState', function(e) {
  console.warn('THEY DID IT AGAIN!');
});

這段代碼改寫了 history 中原來的函數(shù),然后自己激活一個事件

這樣就可以解決 pushState 無法激活事件的問題了

另外記得最好將這段代碼放在文檔加載前執(zhí)行

以上這篇淺談通過JS攔截 pushState和replaceState事件就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

十堰市| 凉山| 左权县| 庆城县| 台南县| 堆龙德庆县| 密山市| 庄河市| 天峨县| 门源| 天峻县| 宝应县| 卢龙县| 肇源县| 平果县| 高台县| 根河市| 兰溪市| 三门峡市| 安徽省| 茶陵县| 南通市| 遂昌县| 昌邑市| 噶尔县| 营口市| 长葛市| 吴桥县| 新泰市| 兰州市| 新密市| 黄山市| 依兰县| 军事| 菏泽市| 固镇县| 当雄县| 湖南省| 乌拉特前旗| 兴城市| 上蔡县|