我们正在使用 GWT 并利用 History 框架。在应用程序中一切正常,但我们的一些客户正试图在他们的 PowerPoint 演示文稿中放置指向我们应用程序的超链接。但是在 PP2007 中存在一个已知问题,超链接中带有井号(“#”),这使得它们无法使用。
那么有什么方法可以将 GWT Hisory 框架生成的 URL 中使用的分隔符更改为哈希以外的其他字符?
或者是否可以拦截 GWT 历史生成的新 URL 并在浏览器的地址栏更新之前对其进行修改?
我们正在使用 GWT 并利用 History 框架。在应用程序中一切正常,但我们的一些客户正试图在他们的 PowerPoint 演示文稿中放置指向我们应用程序的超链接。但是在 PP2007 中存在一个已知问题,超链接中带有井号(“#”),这使得它们无法使用。
那么有什么方法可以将 GWT Hisory 框架生成的 URL 中使用的分隔符更改为哈希以外的其他字符?
或者是否可以拦截 GWT 历史生成的新 URL 并在浏览器的地址栏更新之前对其进行修改?
我认为您不能/不应该更改井号。主要是因为这个标志不是来自 GWT 而是来自 HTTP 规范。您可以阅读本文档中关于哈希片段的部分以获得很好的解释。要点是在 url 中添加 # 符号不会导致完整的浏览器刷新。这就是为什么这个标志用于 ajax 和 GWT 的历史。
如果您仍想拦截新的 URL,您可能应该将 ValueChangeHandler 添加到您的历史记录中,然后使用 Window.Location.getHref() 和 Window.Location.assign() 更改 URL。但这就像使用历史来做它不做的事情,所以你最好实现自己的历史管理系统。
请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=7101(有示例代码的链接)
基本上,您只能在支持 HTML5pushState
和onpopstate
. 这排除了 Internet Explorer,不幸的是那些使用 PowerPointer 的人也可能使用 IE,所以基本上你注定要失败。