GWT和第三方跨域JavaScript

时间:2012-03-02 16:57:31

标签: javascript gwt cross-domain gwt-places

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

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

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

  1. 抓住尝试过的地方导航,如果它包含第三方JS使用的某个保留字符串列表,则忽略它。
  2. 让第三方更改他们的解决方案以利用window.name(减少他们的重构)
  3. 让第三方改变他们的解决方案以利用JSONP(他们更多的重构)
  4. 有没有办法真正实现#1?

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

1 个答案:

答案 0 :(得分:1)

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

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

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