一只斗牛犬
2023-04-05 16:13:23
代碼如下:$(function() {
$('a').bind('click', function() { var actionObj = $(this); var actionText = actionObj.text(); var stateObj = {
title : actionText,
url : actionObj.attr('href'),
msg : actionText
}; window.history.pushState(stateObj, actionObj, actionObj.attr('href'));
}); window.onpopstate = function(e) { console.log(e.state);
};
})chrome 或者 firefox 都不行……不知道哪里做錯(cuò)了……
2 回答

波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
其實(shí)你只需要理解一點(diǎn),onpopstate
是在history.back()
之后調(diào)用的。所以這個(gè)時(shí)候e.state
里返回實(shí)際上是back
之后的狀態(tài),比如我在下面的代碼里。一次push了兩個(gè)state,當(dāng)我點(diǎn)擊一次后退的時(shí)候{page : 2}
的state已經(jīng)pop出去了,這時(shí)候e.state
里就只剩下{page : 1}
了。
(function() { $('a').bind('click', function() { window.history.pushState({page : 1}, 'test', '#test1'); window.history.pushState({page : 2}, 'test', '#test2'); return false; }); window.onpopstate = function(e) { console.log(e.state); };})();

蝴蝶不菲
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果要獲得pop出去的那個(gè)狀態(tài),可以先replaceState,然后再pushState
window.history.replaceState({page : 1}, '', ''); window.history.pushState({}, '', '#test1');
這樣popstate事件觸發(fā)的時(shí)候就能獲得event.state的值為{page: 1}
添加回答
舉報(bào)
0/150
提交
取消