如何使用新的Facebook JavaScript SDK关闭(隐藏)FBML对话框?

时间:2010-08-10 14:13:42

标签: javascript facebook fbml

我今天浪费了四个小时,有几根头发试图解决这个问题,但失败了。

我们使用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);
}

不幸的是,设计师用灰色背景制作了这些模态窗口,有些用户可能没有注意到对话框右上角的默认“关闭”按钮。我需要的是将事件绑定到将关闭此对话框的某个自定义元素。我尝试了不同的方法,但没有一种方法有效。

当我使用onclick事件处理程序单击a.fb-close时,最新版本会抛出“a138033292903816_FB未定义”。也许我错过了什么,我搜索了很多但没有运气。

2 个答案:

答案 0 :(得分:2)

我遇到同样的麻烦。第二天寻找解决方案。刚发现一种方式: 要关闭活动的FB对话框,你应该在父窗口中执行跟随代码,其中FB JS可用并且调用了FB.ui:

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

所以,在你的情况下 - 请尝试在iframe中使用这个JS:

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

希望这个帮助

答案 1 :(得分:0)

Facebook将所有javascript函数和变量重命名为randomstring。 Check out this.也许你可以使用CSS来改变模态的背景?