fb:评论设置错误的高度(将评论减半)

时间:2012-11-14 23:23:01

标签: gwt facebook-javascript-sdk

我正在构建一个GWT应用程序,并试图在某些地方动态添加Facebook评论框。这工作正常,但facebook SDK没有正确计算高度。它始终设置为160px。

这意味着第一条评论中只有一半是可见的,即使有多条评论(即它明显减少一半)。如果我在GWT之外使用相同的代码,它可以正常工作(即正确计算高度)。

有人知道facebook SDK如何计算盒子的高度吗?或者我还能尝试什么?


细节:

我将facebook SDK初始化如下:

public static native void initFacebookSDK()
/*-{
    window.fbAsyncInit = function() {
        // init the FB JS SDK
        FB.init({
            appId : '<my-app-id>', // App ID from the App Dashboard
            channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
            status : true, // check the login status upon init?
            cookie : true, // set sessions cookies to allow your server to access the session?
            xfbml : true
        // parse XFBML tags on this page?
        });

        // Additional initialization code such as adding Event Listeners goes here

    };

    // Load the SDK's source Asynchronously
    (function(d, debug) {
        var js, id = 'facebook-jssdk', ref = d
                .getElementsByTagName('script')[0];
        if (d.getElementById(id)) {
            return;
        }
        js = d.createElement('script');
        js.id = id;
        js.async = true;
        js.src = "//connect.facebook.net/en_US/all"
                + (debug ? "/debug" : "") + ".js";
        ref.parentNode.insertBefore(js, ref);
    }(document, false));
}-*/;

我按如下方式添加div:

//_root is a vertical panel
_root.add(new HTML("<div id=\"mydiv\"></div>"));

然后我像这样填充div:

public static native void showComments(String currentUrl_)
/*-{
    var mydiv = $doc.getElementById('mydiv');
    mydiv.innerHTML = "<fb:comments href='" + currentUrl_
            + "' num_posts='5' width='422'></fb:comments>";
    FB.XFBML.parse(mydiv);
}-*/;

问题是facebook SDK总是使用以下内容填充div:

<span style="height: 160px; width: 422px;">
  <iframe ...>...</iframe>
</span>

如果我不使用GWT,则height参数会相应改变,例如:

<span style="height: 1469px; width: 422px;">
  <iframe ...>...</iframe>
</span>

希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

完成了工作。

在JSNI中,我应该分别使用$ doc和$ wnd,而不是文档和窗口。 https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#writing

在我的辩护中,我试过这个,但缺少的成分是我需要将FB对象引用为$ wnd.FB,例如:

$ wnd.FB.init(...)和$ wnd.FB.XFBML.parse(...)

希望这有助于某人。