Facebookが iframe Tabs for Pages を導入したことはご存じのとおりです。アプリケーションを開発し、プロファイルページにアプリケーションのタブを追加しました。アプリケーションのタブは、更新された「ページのiframeタブ」に従ってiframeで開きます。問題は、ページの高さが調整されておらず、スクロールバーを削除してスクロールバーのないページ全体を表示できないことです。私が見つけたすべてのソリューションは、アプリケーションキャンバスページでは機能しますが、アプリケーションタブページでは機能しません。
どうすればそれができますか?
達成するのは非常に簡単です。 Facebook統合タブでアプリケーションを[〜#〜] iframe [〜#〜]として設定し、フレームのサイズを "自動サイズ変更"
次に、サーバーで、</BODY>
タグの前に次のコードを追加する必要があります。
<div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" charset="utf-8">
FB.Canvas.setSize();
</script>
これにより、自動的にサイズ変更されます。また、overflow:hiddenをBODYタグに追加すると役立ちます。
次のガイドは、同じ問題を解決するのに役立ちました。
http://www.hyperarts.com/blog/facebook-iframe-apps-getting-rid-of-scrollbars/
要するに、次のことを行います。
「IFrameサイズ」を「自動サイズ変更」に変更します
FacebookのJavaScript SDKをロードします
インデックスページの</body>
タグの直前に次のコードを追加します。
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'YOUR-APP-ID-HERE',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
</script>
</head>
タグの前に次のコードを挿入します。
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize();
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize();
}
</script>
それでうまくいくでしょう、それが役に立てば幸いです!
facebookは最近何かを変更しました、今あなたのタブファイルもfb.init
メソッドを必要とします。それ以外の場合、サイズ変更は機能しません。これをタブページでも使用してください
<script type="text/javascript" charset="utf-8">
window.fbAsyncInit = function()
{
FB.init({ appId: 'YOUR APP ID',
status: true,
cookie: true,
xfbml: true,
oauth: true});
FB.Canvas.setAutoResize();
FB.Canvas.setAutoGrow();
}
</script>
更新されたコード問題のあるすべての人:
1)アプリケーションの「キャンバスの高さ」を「流体」に設定します。
2)次のコードをコピーして、<body>終了タグの前に貼り付けます。
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
// Called when FB SDK has been loaded
window.fbAsyncInit = function () {
// Initialize the FB javascript SDK
FB.init({
appId: '[YOUR APP ID]',
status: true,
cookie: true,
xfbml: true
});
// Auto resize FB Canvas
FB.Canvas.setAutoGrow();
};
// Load the FB SDK Asynchronously
(function (d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
} (document));
</script>
やあみんな...私もそれで問題がありました..私は無数の解決策と提案を試しましたが、彼らは私のために働いたことはありません。 jqueryライブラリ1.6を1.5.1に変更した後、機能しました。それが問題かどうかを確認してください。
今、私はそれがなぜjqueryのバージョン1.6で動作しないのかを知りたいと思っています。
上記のすべてを役に立たないように試みた私のような人にとって、これが最終的に私のために働いたものです。このページから取得: https://www.facebook.com/note.php?note_id=10150149060995844
前 </head>
:
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize({ height: 'HEIGHT YOU WANT', width: 'WIDTH YOU WANT' });
}
// Do things that will sometimes call sizeChangeCallback()
function sizeChangeCallback() {
FB.Canvas.setSize({ height: 'HEIGHT YOU WANT', width: 'WIDTH YOU WANT' });
}
</script>
その後、</body>
:
<script type="text/javascript">
FB.init({
appId: 'XXXXXXXXXXX', //Your facebook APP here
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true// parse XFBML
});
</script>