【问题标题】:History: avoiding hash ("#") character in URLs历史:避免在 URL 中使用哈希 ("#") 字符
【发布时间】:2012-11-23 00:46:15
【问题描述】:

我们正在使用 GWT 并利用 History 框架。在应用程序中一切正常,但我们的一些客户正试图在他们的 PowerPoint 演示文稿中添加指向我们应用程序的超链接。但是 PP2007 中的 there is known problem 在超链接中带有井号(“#”),这使得它们无法使用。

那么有什么方法可以将 GWT Hisory 框架生成的 URL 中使用的分隔符更改为哈希以外的其他字符?

或者是否可以截取 GWT 历史生成的新 URL 并在浏览器的地址栏更新之前对其进行修改?

【问题讨论】:

    标签: gwt url-rewriting gwt2 gwt-history


    【解决方案1】:

    我认为您不能/不应该更改井号。主要是因为这个标志不是来自 GWT 而是来自 HTTP 规范。您可以阅读此doc 中有关哈希片段的部分以获得很好的解释。要点是在 url 中添加 # 符号不会导致完整的浏览器刷新。这就是为什么这个标志用于 ajax 和 GWT 的历史。

    如果您仍想拦截新的 URL,您可能应该在历史记录中添加一个 ValueChangeHandler,然后使用 Window.Location.getHref() 和 Window.Location.assign() 来更改 URL。但这就像使用历史来做一些它不会做的事情,所以你最好实现自己的历史管理系统。

    【讨论】:

    • 感谢您的深入解释。我不知道哈希符号的特殊功能。
    【解决方案2】:

    http://code.google.com/p/google-web-toolkit/issues/detail?id=7101(有示例代码链接)

    基本上,您只能在支持 HTML5 的 pushStateonpopstate 的浏览器中执行此操作。这排除了 Internet Explorer,不幸的是那些使用 PowerPointer 的人也可能使用 IE,所以基本上你注定要失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2012-09-16
      • 1970-01-01
      • 2010-12-21
      • 2021-05-12
      • 1970-01-01
      • 2012-11-02
      相关资源
      最近更新 更多