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

淺談通過(guò)JS攔截 pushState和replaceState事件

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

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

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

經(jīng)過(guò)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 中原來(lái)的函數(shù),然后自己激活一個(gè)事件

這樣就可以解決 pushState 無(wú)法激活事件的問(wèn)題了

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

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

相關(guān)文章

最新評(píng)論

上高县| 金华市| 清苑县| 科尔| 吉安市| 天水市| 安溪县| 冕宁县| 宜兰县| 横山县| 苍溪县| 宁德市| 四平市| 凤翔县| 南宁市| 桐乡市| 海晏县| 湟中县| 望江县| 三河市| 永善县| 安乡县| 天气| 汉寿县| 运城市| 河源市| 斗六市| 石台县| 渝中区| 休宁县| 株洲市| 左权县| 利辛县| 恩平市| 花莲县| 鄂托克前旗| 娄烦县| 宿松县| 遵义市| 九龙县| 吉木乃县|