2017-02-10 3 views
1

Существует веб-приложение, которое работает, загружая различные фреймы в iself. Он предоставляет некоторый код, к которому подключается дочерний iframes.управляет тем, что iframe видит как window.top?

Детский iframes access window.top вместо window.parent и находится вне моего контроля. Все работает нормально.

Теперь я хочу включить ЭТО ПРИМЕНЕНИЕ в качестве iframe на другом сайте. Это приложение не нуждается в «родительском» или «верхнем» доступе к этому другому сайту. Однако, когда дочерние iframe этого приложения делают window.top, они заканчиваются тем, что «верх» является другим сайтом, а не приложением.

В идеале, я хочу, чтобы window.top (в дочерних iframes) означал «это приложение», а не «другой сайт, который включал это приложение в iframe».

Кажется, окно.top читается только. Какие у меня варианты?

EDIT: У меня есть полный доступ к этому приложению и другому сайту. Исправлены только дочерние рамки внутри этого приложения.

В качестве примера возможных решений:

  1. Имейте это приложение вставить поддельный объект окна в ребенок рамка с .top со ссылкой на приложения.
  2. Передача всех файлов через серверный прокси-сервер, который динамически переписывает код дочерних кадров.

EDIT 2: Таким образом, «решение» должно заменить .top на .parent или .parent.parent, если оно дополнительно вложено в набор фреймов (случай несколько раз). Пока я могу это сделать, когда пользователь загружает свой HTML/js (который получает iframed) в CMS этого приложения. Тогда код никогда не поднимается полностью на другой сайт. Все еще ищет дополнительные опции, не связанные с модификацией файлов на диске.

+0

Вы не можете контролировать это. – epascarello

ответ

0

Вы не можете контролировать, что такое window.top, оно всегда будет верхним окном. Если у вас есть доступ к коду страницы, в которую вы встраиваете свое приложение, вы можете передать ему информацию из своего приложения (в зависимости от того, для чего вы используете window.top для).

Если вам просто нужно прочитать некоторую информацию от него или иметь его слушать какое-то событие, вы можете использовать postmessage ретранслировать информацию от кадра приложения к родительскому фрейму (тот, который в настоящее время обнаруживается в window.top, но в противном случае вам не повезло

+0

Фактически, я видел, как кто-то создал свой собственный оконный объект, чтобы заменить объект окна и установить вершину на что-то еще. Таким образом, есть варианты. Также пишут код для загрузки каждого элемента как текст, динамически меняет ссылки на window.top и eval it. Я не повезло. Я ищу наилучшее решение. – AwokeKnowing

+0

Я бы не рекомендовал ни одну из этих вещей – Pabs123