В настоящее время у меня есть проект GWT, использующий модель "Действия и места", предоставленную Google. Мы интегрируемся со сторонним междоменным решением JavaScript, которое отображает JSP внешнего домена в iframe и использует транспорт window.location для уведомления нашего домена, когда пользователь завершил работу с этим JSP.
Проблема в том, что при использовании транспорта window.location система размещения GWT перехватит редактирование URL-адреса и попытается перейти в несуществующее место.
У нас есть некоторое влияние, чтобы заставить третью сторону измениться, поэтому я вижу три варианта:
- Поймайте попытку навигации по месту и проигнорируйте ее, если она содержит определенный список зарезервированных строк, которые использует этот сторонний JS.
- Попросите третью сторону изменить свое решение на использование window.name (меньше рефакторинга с их стороны)
- Попросите третью сторону изменить свое решение для использования JSONP (с их стороны потребуется больше рефакторинга)
Есть ли способ достичь №1?
EDIT. Итак, я понял, как достичь №1, развернув мою собственную версию GWT PlaceHistoryHandler и изменив метод handleHistoryToken. Настоящий вопрос в том, какое из этих трех решений является наилучшим?