Reading window.history.state object in Webkit

前端 未结 2 412
悲哀的现实
悲哀的现实 2020-12-21 13:20

Safari and Chrome (and, I\'m guessing, all Webkit browsers) do not respond to window.history.state which is specified in the evolving HTML5 standard here and i

2条回答
  •  南笙
    南笙 (楼主)
    2020-12-21 13:58

    I ran into this issue yesterday. I didn't need a cross browser solution since the target platform is running an oldish version of WebKit, so I created a quick and simple polyfill for history.state in WebKit:

    // Polyfill for history.state in older webkit engines
    if (!history.hasOwnProperty('state')) {
        (function (push, rep) {
            // history.state is always initialised to null
            history.state = null;
    
            history.pushState = function (state) {
                push.apply(history, arguments);
    
                history.state = state;
            };
            history.replaceState = function (state) {
                rep.apply(history, arguments);
    
                history.state = state;
            };
    
            window.addEventListener('popstate', function (e) {
                history.state = e.state;
            }, true);
    
        })(history.pushState, history.replaceState);
    }
    

提交回复
热议问题