У компании, с которой я работаю, есть приложение - это старое одностраничное веб-приложение, написанное с использованием GWT, но на самом деле это не вопрос, специфичный для GWT.
Если у вас есть одностраничное приложение иВы хотите поддерживать кнопки «Назад» и «Вперед», вам часто приходится манипулировать местоположением / историей браузера, чтобы это работало.GWT поддерживает такие манипуляции с историей, и это приложение использует их.Чтобы все это работало, GWT, похоже, использует iframe, который манипулирует местоположением своего родителя.Это прекрасно работает, за исключением ...
Эта компания ищет аналитический инструмент, который интегрируется с их приложением, помещая его в iframe.Таким образом, вы получите что-то вроде этого
- AT: инструмент аналитики с iframe, содержащим
- CT: инструмент компании с 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 имеет дочерний кадр, которому следует разрешитьсмените его местоположение.
Я не очень много знаю о вложенных фреймах и песочнице, поэтому, если кто-то знает больше или имеет больше удачи / навыков в поиске ответа, я бы хотел получить окончательный ответ, даже если этоОтвет: «Вы не можете».