欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

雖然各種HTML5文檔說 window.onpopstate 事件可以攔截 pushState 的消息,但在實(shí)際的測(cè)試中, 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ù),然后自己激活一個(gè)事件

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

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

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

相關(guān)文章

最新評(píng)論