Как закрыть (скрыть) FBML-диалог, используя новый Facebook JavaScript SDK? - PullRequest
3 голосов
/ 10 августа 2010

Сегодня я потратил четыре часа и несколько попыток решить эту проблему, но не смог.

Мы используем facebook.connect для авторизации пользователей на нашем сайте и выполнения различных действий.Одно из этих действий должно вызвать fbml:dialog, я решил использовать новый JavaScript SDK.Вот функция, которую я использую:

function popupModalWindow(cat) {
    var oldSize = FB.UIServer.Methods["fbml.dialog"].size;
    FB.UIServer.Methods["fbml.dialog"].size = {width: 402, height: 112};
    //FB.UIServer.id = FB.UIServer._active[id];

    var messages = {
        interesting:  '<p>By submitting my entry, I confirm that I have obtained permission from the persons whose picture and/or voice appears in my entry for use and publication in this contest as outlined in the Official Rules [link]</p>'
    };
    // alert(messages[cat]);
    FB.ui(
        {
            method: 'fbml.dialog',
            //id: 'ololo',
            display: 'dialog',
            width: 402,
            height: 112, /**/ //Should work that way according to the API reference
            size : {width: 402, height: 112},
            fbml: '<link rel="stylesheet" href="http://rentatext.mygrate.biz/styles.css"/><div class="modal-white" style="width: 402px;">'+
            '<h6>User Agreement</h6>'+
            '<fb:js-string var="oloe">document.getElementsByTagName("iframe")[0].id;</fb:js-string>'+
            '<div class="inner">'+messages[cat]+' <a class="fb-close" onclick="FB.UIServer._active[oloe].close()">i agree</a></div></div>'
            ,
        },
        function() {
            alert(1);
        }

    );
    console.debug(FB.UIServer);
}

К сожалению, дизайнер сделал эти модальные окна с серым фоном, и некоторые пользователи могут не заметить стандартную кнопку «Закрыть» в правом верхнем углу диалога.Мне нужно привязать событие к какому-либо пользовательскому элементу, который закроет этот диалог.Я пробовал разные подходы, но ни один из них не сработал.

Последний из них выдает «a138033292903816_FB не определен», когда я нажимаю a.fb-close с помощью обработчика события onclick.Может быть, я что-то упустил, я много гуглил, но безуспешно.

Ответы [ 2 ]

2 голосов
/ 21 января 2011

У меня такая же проблема. Второй день в поисках решения. И просто нашел один способ: для закрытия активного диалога FB необходимо выполнить следующий код в родительском окне, где доступен FB JS и где был вызван FB.ui:

FB.Dialog.remove(FB.Dialog._active);

Итак, в вашем случае - попробуйте использовать этот JS в iframe:

parent.FB.Dialog.remove(parent.FB.Dialog._active);

Надеюсь, эта помощь

0 голосов
/ 09 сентября 2010

Facebook переименовывает все ваши функции и переменные javascript в произвольную строку. Проверьте это. Может быть, вы могли бы использовать CSS для изменения фона модала?

...