[英]GWT History - Why does it change the focus of my screen?
我有一个简单的应用程序结构,该结构可以随时包含三个组合-我的页眉,页脚和内容组合。 复合材料按以下方式布置。
<body>
<div id="header">
<div id="content">
<div id="footer">
</body>
组合在我的EntryPoint
中分配给三个<div>
。 EntryPoint
还包含一个历史记录处理程序,如下所示。
History.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
if(historyToken.isEmpty()) {
parseTokens();
ContentContainer.INSTANCE.setContent(new IndexScreen());
}
else if(historyToken.equalsIgnoreCase("registration")) {
ContentContainer.INSTANCE.setContent(new RegisterScreen());
}
else if(historyToken.equalsIgnoreCase("login")) {
ContentContainer.INSTANCE.setContent(new LoginScreen());
}
}
});
History.fireCurrentHistoryState();
在我的Composites中,我有几个看起来类似于以下内容的ClickEvent
处理程序。
@UiHandler("registerLink")
public void handleClick(ClickEvent event) {
ContentContainer.INSTANCE.setContent(new RegisterScreen());
History.newItem("registration", true);
}
这很好地记录了历史。 单击后退按钮时,它也将我带到相应的页面。 但是,将浏览器聚焦在内容复合上具有非常奇怪的效果,浏览器滚动到底部。 这不是一个破坏交易的行为,但是会稍微破坏用户体验。 (如果解释不清楚,请告诉我,我会添加图片)
究竟是什么原因导致的?我该如何解决?
GWT历史记录令牌与井号#
令牌一起使用。 在html中,如果元素的name
或id
带有#
标记后的字符串,则最初打算使用浏览器将其聚焦于页面的特定部分。 可能是您的id
与您的历史记录令牌匹配吗?
同样在handleClick
您调用setContent
。 但是,如果我在触发更改事件后正确调用,它将终止于onValueChange
,该onValueChange
也调用setContent
。 因此,您似乎在这里两次调用了setContent
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.