簡體   English   中英

GWT歷史記錄-為什么它會改變屏幕的焦點?

[英]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中,如果元素的nameid帶有#標記后的字符串,則最初打算使用瀏覽器將其聚焦於頁面的特定部分。 可能是您的id與您的歷史記錄令牌匹配嗎?

同樣在handleClick您調用setContent 但是,如果我在觸發更改事件后正確調用,它將終止於onValueChange ,該onValueChange也調用setContent 因此,您似乎在這里兩次調用了setContent

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM