历史:避免URL中的哈希(“#”)字符

时间:2012-06-22 07:10:40

标签: gwt url-rewriting gwt2 gwt-history

我们正在使用GWT并利用History框架。一切都在应用程序中正常工作,但我们的一些客户正试图在他们的PowerPoint演示文稿中将超链接放到我们的应用程序中。但PP2007中的there is known problem在超链接中带有哈希符号(“#”),这使得它们无法使用。

那么有没有办法将GWT Hisory框架生成的URL中使用的分隔符更改为哈希以外的其他东西?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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