История: избегая хеша ("#") в URL
Мы используем GWT и пользуемся историей. В приложении все работает нормально, но некоторые из наших клиентов пытаются добавить гиперссылки на наше приложение в своих презентациях PowerPoint. Но в PP2007 существует известная проблема со знаками хеша ("#") в гиперссылках, которая делает их непригодными для использования.
Так есть ли способ изменить символ-разделитель, используемый в URL-адресах, созданных в рамках GWT Hisory, на что-то иное, чем хеш?
Или возможно перехватить новый URL-адрес, созданный историей GWT, и изменить его до того, как будет обновлена адресная строка браузера?
2 ответа
Я не думаю, что вы можете / должны изменить хеш-знак. Главным образом потому, что этот знак не от GWT, а от спецификаций HTTP. Вы можете прочитать часть об фрагментах хеша в этом документе для хорошего объяснения. Главное, что добавление знака # в URL не приведет к полному обновлению браузера. Вот почему этот знак используется для истории ajax и GWT.
Если вы все еще хотите перехватывать новые URL-адреса, вам, вероятно, следует добавить ValueChangeHandler в свою историю, а затем использовать Window.Location.getHref () и Window.Location.assign () для изменения URL-адреса. Но это похоже на использование History для того, что он не делает, так что вам лучше внедрить собственную систему управления History.
См. http://code.google.com/p/google-web-toolkit/issues/detail?id=7101 (есть ссылки на пример кода)
По сути, вы можете сделать это только в браузере, который поддерживает HTML5 pushState
а также onpopstate
, Это исключает Internet Explorer, и, к сожалению, те, кто использует PowerPointer, вероятно, также будут использовать IE, так что в основном вы обречены.