GWT历史记录中需要什么History.fireCurrentHistoryState()?
您好,我正在开发 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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, whileHistory.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 asHistory.newItem(currentToken)
.