关于PopState的javascript历史记录

关于PopState的javascript历史记录,javascript,history,Javascript,History,我试图理解HTML5历史对象。这是一个简单的例子,我从这里开始 function addDialog(){ document.getElementById('d').style.display =''; history.pushState({name:"changed"},"","#newURL"); } window.onpopstate = function(e){ alert(e.state); }

我试图理解HTML5历史对象。这是一个简单的例子,我从这里开始

    function addDialog(){
         document.getElementById('d').style.display ='';
         history.pushState({name:"changed"},"","#newURL");
    }

    window.onpopstate = function(e){  
        alert(e.state);
    }
我有一个id为
d
div
,其
display
属性为
none
。单击链接后,我将显示div并更改历史记录,以便加载新的url

当我复制粘贴新url时,
popstate
事件被触发,我得到
e.state
null

据我所知,如果我加载新的url
http://example.com#newURL
e.state
应该指向我使用pushstate推送的对象


如果我错了,请纠正我,并且我想知道何时填充
e.state

在我测试时,e.state只会在单击后退或前进按钮时获得添加到历史记录中的弹出状态。否则,它将为您提供空值

您可以对URL使用参数,以便测试请求是来自历史记录调用还是来自位置栏中的URL

onpopstate = function(event) {
    alert('popEvent: ' + event);
    if(event.state){
        setupPage(event.state);
    } else {
        setupPage(getQStringParam('zid'));
    }
}