javascript 历史 onpopstate

发布于 2024-11-18 06:13:35 字数 672 浏览 0 评论 0原文

我正在尝试理解 HTML5 历史对象。这是我开始时的一个简单示例。

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

    window.onpopstate = function(e){  
        alert(e.state);
    }

我有一个 id 为 ddiv,其 display 属性为 none。单击链接时,我将显示 div 并更改历史记录,以便加载新的 url。

当我复制粘贴新网址时,popstate 事件被触发,并且我得到 e.statenull

据我了解,如果我加载新网址 http://example.com#newURLe.state 应该指向我使用 Pushstate 推送的对象。

如果我错了,请纠正我,我也想知道 e.state 何时被填充。

I am trying to understand HTML5 history object. Here is a simple example which I started off with.

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

    window.onpopstate = function(e){  
        alert(e.state);
    }

I have a div with an id d for which display property is none. On clicking a link, I will display the div and change the history so that new url will be loaded.

When I copy paste the new url, popstate event is fired and I get null for e.state.

From what I understand, if I load the new url http://example.com#newURL, e.state should point to the object which I pushed using pushstate.

Please correct me if I am wrong and also I would like to know when e.state gets populated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

固执像三岁 2024-11-25 06:13:35

正如我测试的,e.state 仅获取当您单击“后退”或“前进”按钮时添加到历史记录中的弹出状态。否则,它会给你 null。

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

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

As I tested, the e.state only get the pop state that you add to the history when you click in the Back or Forward button. Otherwise, it will give you the null.

You can use parameters to your URL so you can test if the request came from a history call or from an URL in the location bar.

onpopstate = function(event) {
    alert('popEvent: ' + event);
    if(event.state){
        setupPage(event.state);
    } else {
        setupPage(getQStringParam('zid'));
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文