【问题标题】:Clear URL GET parameters without refreshing in GWT清除 URL GET 参数而不在 GWT 中刷新
【发布时间】:2013-07-18 22:29:45
【问题描述】:

我使用 get 请求和一些参数调用我的应用程序...我可以毫无问题地检索它们,但随后应用程序继续使用 url 中的参数。

我在开发模式下得到这个

myapp?name=...&pass=...

我只需要删除以下行:“?name=...&pass=...”。无需刷新我的应用程序。

谢谢!

更新: 但是,在大多数浏览器中,有一种称为 pushState 的新机制,因此您可以将 url 更改为任何值而无需重新加载页面。 GWT 还没有任何包装器,但是您可以通过 JSNI 使用它,或者,如果您希望将 gwtquery 添加到您的项目中,请使用以下代码:

import static com.google.gwt.query.client.GQuery.*;

Properties history = JsUtils.prop(window, "history");
JsUtils.runJavascriptFunction(history, "pushState", null, null, "whatever.html?foo=true");

只有一个问题...不能与 CHROME 一起使用!

【问题讨论】:

    标签: url gwt


    【解决方案1】:

    您无法使用 GWT 的当前 (2.5) History API 清除查询参数,因为它基于 fragment IDs(URI 的最后一部分,在“#”之后)。在 HTML5 History API 之前,片段 ID 更改是唯一可以在不重新加载 Web 应用程序的情况下对 URI 进行的编程更改。

    借助 Johannes Barop 的 gwt-pushstate 库,目前可以在您的 GWT 应用程序(browsers which support it)中利用 HTML5 History API。它可能会帮助您满足在不重新加载应用程序的情况下删除查询参数的要求。

    这是一个handy page,用于测试 HTML5 History API 支持。

    【讨论】:

    • 有什么简单的使用例子吗?
    【解决方案2】:

    使用History#newItem(java.lang.String historyToken,boolean issueEvent) 并将您的issueEvent 设置为false

    【讨论】:

    • 不!这会更改 URL 片段 ID,作者询问是否删除 URL 查询参数。
    • 没错。新的 URl 片段 ID 将没有参数
    • 作者没有询问从片段 ID 中删除任何内容(“令牌”,在 GWT 中 - URL 中“#”之后的部分)。问题是关于删除不属于历史令牌的查询参数。
    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2015-12-26
    • 2019-06-02
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多