как перезагрузить самое верхнее окно из iframe? - PullRequest
4 голосов
/ 10 мая 2011

Я занимаюсь разработкой приложения для Facebook, которое имеет следующую «структуру»:

Browser window (facebook.com/page/xxxx)
  -- My app's iframe
    -- Like button's iframe

Я использую кнопку «Мне нравится» в моем приложении, так что это iframe внутри iframe, когда пользователи нажимают наКнопка «Мне нравится». Я хотел бы показать содержимое, чтобы страница в настоящее время выглядела примерно так:

if ( is_fan() ) {
    //show content
} else {
    //show like button plus other text
}

Фактическая логика проверки того, что пользователь уже является поклонником, работает так, как задумано, проблема в том, чтокогда я нажимаю кнопку «Мне нравится», мне нужно перезагрузить всю страницу, чтобы показать «фанатский контент», если я сделаю это:

FB.Event.subscribe('edge.create', function(href, widget) {
    top.location.reload();
});

Страница перезагружается, но все остается тем же, но еслиЯ нажимаю «Мне нравится» и нажимаю кнопку «Обновить» в моем браузере, все отображается нормально.

Может кто-нибудь помочь мне разобраться?

Заранее спасибо!

Ответы [ 4 ]

7 голосов
/ 10 мая 2011

Мы ссылаемся на родительскую страницу facebook как top.

используем top.location.href=""; или top.location.reload();

2 голосов
/ 07 октября 2014

Попробуйте top.location.reload(true); вместо top.location.reload();

Извлечено из http://www.w3schools.com/jsref/met_loc_reload.asp:

По умолчанию метод location.reload () перезагружается из кэша, но вы самиможет заставить перезагрузку получить страницу с сервера, установив для параметра forceGet значение true: location.reload (true).

2 голосов
/ 09 октября 2013

Ни top.location.href="";, ни top.location.reload(); не работали для меня.

Мне пришлось использовать top.location.href="http://www.facebook.com/appurl";

0 голосов
/ 12 сентября 2014

Для перезагрузки вы можете использовать top.location.href = top.location.href;

...