我正在构建一个 GWT 应用程序,并尝试在某些地方动态添加 facebook 评论框。这工作正常,除了 facebook SDK 没有正确计算高度。它始终将其设置为 160 像素。
这意味着只有一半的第一条评论是可见的,即使有多个评论(即它被明显地切成两半)。如果我在 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>
希望有人可以提供帮助。