[英]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.