2011-12-20 4 views
1

У меня есть приложение холста facebook, которое как верхняя панель настройки. Я добавил подобную кнопку, которая открывает IFrame, который содержит пользователей, которым понравилось приложение, с возможностью как/в отличие от приложения. Я добавил кнопку в этот iframe, который должен закрыть этот iframe при нажатии.закрытие iframe внутри этого iframe, когда родительский объект не находится в том же домене

так внутри IFrame HTML я есть:

function closeIFrame() { 
    window.parent.closeLikeIframe(); 
} 

кнопку, которую я создал выполнить эту функцию.

внутри родительской страницы У меня есть следующий код:

function closeLikeIframe() { 
    var iframe = document.getElementById('likeIframe'); 
    iframe.style.display = "none"; 
} 

так в Firefox он прекрасно работает, но это не в других браузерах. Могу я Javascript ошибки

unsafe JavaScript attempt to access frame with URL http://X from frame with URL http://Y. Domains, protocols and ports must match. 
user_like.html:15Uncaught TypeError: Property 'closeLikeIframe' of object [object DOMWindow] is not a function 

не нахожу функцию closeLikeIframe, потому что главная страница сидит на Facebook, а сам IFrame сидит на моих серверах, так что я не разрешаю доступ.

любые идеи о том, как правильно открыть и закрыть этот IFrame?

благодаря

+1

У меня нет expierence с facebook, но, как правило, JavaScript не может получить доступ к чему-либо из другого домена, и мало что можно сделать, кроме повторной концептуализации проекта. – RoToRa

ответ

1

Там в целом обходной путь, который немного Hacky, и включает в себя положить другой IFRAME внутри первого:

+------------------------------------------------+ 
| A: Main page on FB        | 
|            | 
| +---------------------------------------+ | 
| | B: Iframe (page on your server)  | | 
| |          | | 
| | +--------------------------------+ | | 
| | | C: Another iframe, page on FB | | | 
| | |        | | | 
| | +--------------------------------+ | | 
| +---------------------------------------+ | 
+------------------------------------------------+ 

А и С могут общаться, потому что они из того же домена.

С содержит только небольшой скрипт, который прослушивает параметров URL и вызывает методы А.

В устанавливает атрибут Src из C с соответствующими параметрами URL.

Редактировать: This post объясняет это еще лучше, с реальной диаграммой и всем остальным!

+0

спасибо. выглядит великолепной идеей. я приму свой ответ. Я решил проблему, используя div вместо iframe. но если бы мне пришлось использовать iframe, это решение было бы идеальным. – ufk

Смежные вопросы