【问题标题】:GWT History remove itemGWT 历史删除项目
【发布时间】:2010-10-19 10:43:35
【问题描述】:

是否可以删除 gwt 中的历史记录项?我想要实现的是,在特殊情况下,按下浏览器的后退按钮将显示后面的第二个历史记录项。我知道我可以通过手动调用 History.back(); 来做到这一点,但我不喜欢这样,因为用户会在一秒钟左右看到过渡,这并不好。提前谢谢帮助。

库库

【问题讨论】:

  • 如果用户不应该访问令牌,为什么要把它放在历史堆栈中?
  • 问题是当我把令牌放入时,我不知道是否应该添加它。

标签: gwt gwt-history


【解决方案1】:

不,浏览器不允许这样做。

GWT(当然)使用 Javascript 来操作浏览器历史记录。 Javascript 引擎不允许删除历史条目。

也许您可以创建HistoryListener 来跳过您想要删除的步骤,但您必须自己跟踪历史记录才能决定跳过哪种方式(向前或向后)

【讨论】:

    【解决方案2】:

    如上所述,这无法通过 GWT 实现,但您可以使用 History 进行管理

    (注意:HistoryListener - 在上一篇文章中提到 - 已被弃用)

    这是一个简单的示例,可以帮助您入门。

    public class UrlManager implements ValueChangeHandler<String> {
    
    public UrlManager() {
         History.addValueChangeHandler(this);       
    }
    
    public void onValueChange(ValueChangeEvent<String> event) {     
        String historyToken = event.getValue();
    }
    

    }

    【讨论】:

      【解决方案3】:

      您可以使用 History.replaceItem(newToken, fireEvent)。

      这将替换浏览器历史堆栈顶部的当前历史令牌。
      newToken - 替换当前顶部条目的历史令牌
      fireEvent - 是否要触发历史状态事件的布尔值

      【讨论】:

        猜你喜欢
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 2017-07-31
        • 1970-01-01
        • 2011-05-30
        • 2012-09-10
        相关资源
        最近更新 更多