GWT历史记录中需要什么History.fireCurrentHistoryState()?

发布于 2024-11-27 19:27:31 字数 1061 浏览 1 评论 0原文

您好,我正在开发 GWT 示例历史管理应用程序。 这是我的 onModuleLoad 代码。

public void onModuleLoad() {
    ContentPanel panel = ContentPanel.getInstance();
    if(History.getToken()!=null && History.getToken().length()==0)
    {
        History.newItem("first_page");
    }
    History.addValueChangeHandler(new HistoryHandler());
    RootPanel.get().add(panel);
    History.fireCurrentHistoryState();
}

在此我触发了 History.fireCurrentHistoryState();激发当前的历史状态。 现在,在我的firstPanel类中,有一个名为Second Panel的按钮,在该按钮上触发了历史记录令牌second_page。

public FirstPanel() {
    VerticalPanel panel = new VerticalPanel();
    Button button2 = new Button("Second Panel");
    button2.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            History.newItem("second_page");
        }
    });
    panel.add(button2);
    initWidget(panel);
}

但这里不需要触发 History.fireCurrentHistoryState() ;再次。 简单的 history.newItem 就可以正常工作。

现在我想知道仅在模块加载时需要 History.fireCurrentHistoryState() 吗? 另外为什么在申请中不需要第二次?

Hello I am working on a GWT sample history management application.
Here is my onModuleLoad Code.

public void onModuleLoad() {
    ContentPanel panel = ContentPanel.getInstance();
    if(History.getToken()!=null && History.getToken().length()==0)
    {
        History.newItem("first_page");
    }
    History.addValueChangeHandler(new HistoryHandler());
    RootPanel.get().add(panel);
    History.fireCurrentHistoryState();
}

In this I fired History.fireCurrentHistoryState(); to fire current state of history.
Now In my firstPanel class ther is button named Second Panel on which history token second_page is fired.

public FirstPanel() {
    VerticalPanel panel = new VerticalPanel();
    Button button2 = new Button("Second Panel");
    button2.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            History.newItem("second_page");
        }
    });
    panel.add(button2);
    initWidget(panel);
}

But here no need to fire History.fireCurrentHistoryState() ; again.
simply histtory.newItem works fine.

Now I want to know that what the need of History.fireCurrentHistoryState() at module load time only?
Also why it is not required second time in the application.?

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

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

发布评论

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

评论(1

小鸟爱天空丶 2024-12-04 19:27:31

History.fireCurrentHistoryState() 调用您的历史记录处理程序,而不实际在浏览器历史记录堆栈中插入新的历史记录项,而 History.newItem(token) 确实将新的历史记录标记插入历史记录堆栈中。

注意:如果您当前的令牌与新令牌相同(即重新加载同一页面),则浏览器不会将其插入历史堆栈。在这种情况下(当前令牌 == 新令牌)History.fireCurrentHistoryState()History.newItem(currentToken) 具有相同的效果。

History.fireCurrentHistoryState() invokes your history handlers without actually inserting new history item in browser history stack, while History.newItem(token) does insert new history token into history stack.

Note: if your current token is the same as new token (i.e. same page is reloaded), then browsers do not insert this into history stack. In this case (current token == new token) History.fireCurrentHistoryState() has the same effect as History.newItem(currentToken).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文