Как iFrame из другого домена может избавиться от самого себя? - PullRequest
1 голос
/ 13 апреля 2011

Я создаю букмарклет для различных сайтов, который в основном работает следующим образом:

  1. Пользователь переходит на foo.com (внешний сайт, который не находится под моим контролем)
  2. Пользователь нажимает кнопкубукмарклет в своих браузерах, который получает некоторую информацию с foo.com и отображает ее в форме на bar.com внутри iframe
  3. Пользователь отправляет форму внутри bar.com, которая находится внутри foo.com
  4. Iframe исчезает

Проблема заключается в том, что iFrame удаляет сам себя.Поскольку я не могу получить доступ к функции внутри родительского домена в другом домене, я не могу создать пользовательскую функцию parent.removeIFrame () или даже выполнить window.top.location.reload ().Я перепробовал много техник, но все они терпели неудачу из-за междоменных сценариев.

Я решил это путем изменения top.location.href на пользовательскую страницу, которую я создал на bar.com/back.html ввсе, что он делает, это просто отправляет одну команду history.back (), которая отбрасывает пользователя на исходную страницу.Несмотря на креативность, я не думаю, что это очень элегантное решение.Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Когда вы внедрили код JS для создания формы на странице сайта, вы можете опросить его (js за пределами недавно созданного iframe), чтобы узнать, когда удалять iframe.Вы можете использовать все виды методов, включая jsonp, длинный опрос, почтовое сообщение, идентификаторы фрагментов и т. Д. Для этого вам не нужно загружать большую библиотеку - чем меньше, тем лучше для закладок.

0 голосов
/ 02 мая 2011

Вы можете попробовать идентификатор фрагмента для междоменного обмена сообщениями.Для этого есть библиотека YUI: http://www.julienlecomte.net/blog/2007/11/31/

...