私はGWTアプリケーションを構築していて、特定の場所にFacebookのコメントボックスを動的に追加しようとしています。Facebook SDKが高さを正しく計算していないことを除いて、これは正常に機能しています。常に160pxに設定します。
これは、複数のコメントがある場合でも、最初のコメントの半分しか表示されないことを意味します(つまり、目に見えて半分にカットされます)。GWTの外部で同じコードを使用すると、正常に機能します(つまり、高さが正しく計算されます)。
Facebook SDKがボックスの高さを計算する方法を知っている人はいますか?または他に何を試すことができますか?
詳細:
FacebookSDKを次のように初期化します。
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);
}-*/;
問題は、FacebookSDKが常にdivに次の情報を入力することです。
<span style="height: 160px; width: 422px;">
<iframe ...>...</iframe>
</span>
一方、GWTを使用しない場合、高さパラメーターは適切に変更されます。例:
<span style="height: 1469px; width: 422px;">
<iframe ...>...</iframe>
</span>
誰かが助けてくれることを願っています。