与我合作的公司有一个应用程序-这是一个用GWT编写的较旧的单页Web应用程序,但这并不是GWT特定的问题。
如果您有一个单页应用程序,并且想要支持后退按钮和前进按钮,则通常必须操纵浏览器的位置/历史记录才能使其正常工作。 GWT支持执行这种历史记录操作,并且此应用程序使用了它。为了使所有这些工作正常进行,GWT似乎使用了操纵其父代位置的iframe。效果很好,除了...
该公司正在研究一种分析工具,该工具可通过将其放入iframe中来与其应用程序集成。所以你最终会遇到这样的情况
该工具使用沙盒iframe与分析一起显示网站。他们想将包含未编写代码的iframe沙箱化是有道理的。但是沙盒可以防止其应用程序的子框架更改其自身父框架的位置。因此,由于AT级别将CT级别沙箱化,因此GWT级别无法更改CT级别的位置,Chrome浏览器控制台显示:
AB662A4E6F835A8172708BB40A016108.cache.html:21705 Unsafe JavaScript attempt to initiate navigation for frame with URL 'http://host/app.html' from frame with URL 'http://host/app/AB662A4E6F835A8172708BB40A016108.cache.html'. The frame attempting navigation is sandboxed, and is therefore disallowed from navigating its ancestors.
如果您遵循了所有这些规则,那么我的问题是:
CT级别是否可以告诉浏览器,即使GWT级别被埋在AT沙箱中,也应允许其更改位置?我不需要/想要GWT框架来更改AT框架的位置,我对沙盒限制非常满意,我只想能够确定CT级别具有应允许的子框架更改其位置。
我对嵌套iframe和沙箱的了解不多,因此,如果有人对答案有更深的了解或具有更好的运气/技能,我也希望做出一个明确的答复,即使该答复是“您不能。”