1

我目前有一个使用 Google 提供的活动和地点模型的 GWT 项目。我们正在与第三方跨域 JavaScript 解决方案集成,该解决方案在 iframe 中呈现外部域的 JSP,并在用户完成此 JSP 中的工作时利用 window.location 传输通知我们的域。

问题在于,通过使用 window.location 传输,GWT 的位置系统将捕获 URL 的编辑并尝试导航到不存在的位置。

我们确实有一些影响力让第三方做出改变,所以我能看到的三个选项是:

  1. 如果它包含此第三方 JS 使用的特定保留字符串列表,则捕获尝试的地点导航并忽略它。
  2. 让第三方更改他们的解决方案以利用 window.name(减少他们的重构)
  3. 让第三方更改他们的解决方案以利用 JSONP(他们进行更多重构)

有什么方法可以真正实现#1?

编辑所以我想出了如何通过滚动我自己版本的 GWT 的 PlaceHistoryHandler 并更改handleHistoryToken方法来实现#1。真正的问题是这三种解决方案中的哪一种是最佳实践?

4

1 回答 1

1

如果可能的话,我的投票将是改变跨域信号。浏览器显示的 URL 意味着可以将页面添加为书签以再次加载,并且它提供了一种操作页面历史记录的方法。基于此构建另一种机制可能会使用户添加书签或导航到对历史令牌处理系统没有意义的页面/位置,甚至可能会向应用程序发出 iframe 已加载但实际上并未加载的信号。

也就是说,如果您实际上并未对地点使用历史记录,那么您可以轻松地将 Places + 活动与自定义 PlaceHistoryHandler 类一起使用,该类保留一堆最近的地点,以便在您的应用程序允许的情况下返回它们。这将阻止浏览器后退按钮有意义,但仍允许在内部按位置导航。

除非这是一个有意义的情况(应用程序不需要哈希令牌,所以让它用于域间通信),我会投票给 #2 或 #3。

于 2012-03-02T23:20:14.603 回答