前回の記事(iframe版 Facebookページのスクロールバーを消す方法)では
コードの紹介だけで JavaScript SDK については何も触れなかったので、
JavaScript が得意なスタッフと改めて検証した上で、まとめてみました。
具体的には以下のように指定しています。
head内
・JavaScript SDK を使うための準備(初期化)
・iframe のサイズを変更するための記述(FB.Canvas.setSize)
body内
・iframeのサイズを指定
【head内】
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script language="JavaScript">
FB.init({
appId: 'XXXXXXXXXXXXXXX',
status: true,
cookie: true,
xfbml: true
});
// ここまでが JavaScript SDK を使うための準備(初期化)
// ここから iframe のサイズを変更するための記述
// [A]
window.fbAsyncInit = function() {
FB.Canvas.setSize();
}
// Do things that will sometimes call sizeChangeCallback()
// [B]
function sizeChangeCallback() {
FB.Canvas.setSize();
}
【body内】
<div id="fb-root"></div>
<script>
FB.Canvas.setSize({ width: 520, height: 800 });
</script>
「iframe のサイズを変更するための記述」 は、サンプル通りに書いたのですが
「FB.Canvas.setSize();」 がなぜか違う書き方で 2回も呼び出されています。
前回の記事では削除していたんですが
サンプルにはコメントも書かれていました。
( // Do things that will sometimes call sizeChangeCallback() )
「時々sizeChangeCallback() も呼んでね。」 というような意味でしょうか?
…時々?
そこで、[B] を削除し、[A] だけで動作確認* をしてみたところ、
一部のブラウザで iframe 自体が表示されませんでした。
[B] はどのブラウザでも問題なく表示されるように、
別の書き方で iframe のサイズを変更しているようです。
これ以外にも複数のパターンで試してみましたが、
サンプル通りに書くのが安全だと判断し、前回記事のようになりました。
【Windows】
Internet Explorer 6 : ○
Internet Explorer 7 : ○
Internet Explorer 8 : ○
Mozilla Firefox 3.6.13 : ○
Google Chrome 9.0.597.107 : ○
Opera 11.01 : ○
【Mac】
Safari 3.1.1 : ○
Mozilla Firefox 3.0.19 : ×
Opera 9.21 : ×
ちなみに、
<div id="fb-root"></div> は、なくても動作していたのですが
入れておくのが “決まり” のようなので、入れています。
(参照)
JavaScript SDK - Facebook開発者
http://developers.facebook.com/docs/reference/javascript/
FB.Canvas.setSize - Facebook開発者
http://developers.facebook.com/docs/reference/javascript/fb.canvas.setsize/