iframeにロードするFacebookキャンバスアプリケーションを作成しています。
コンテンツの高さは、そこにロードされる動的データのために異なる可能性があり、事前に設定することはできません。キャンバスは、コンテンツに合わせて自動的にサイズ変更する必要があります。最近のすべてのブラウザで、iframeの垂直スクロールバーを削除する必要があります。
アプリケーションの詳細設定で「CanvasHeight:Fixed at 800px」を設定し、推奨されるFB.Canvas.setSize()でソリューションを使用します。
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({
appId: 'NNNN', // My App ID is placed here
status: true,
cookie: true,
xfbml: true
});
FB.Canvas.setSize();
FB.Canvas.setAutoGrow(7);
};
function sizeChangeCallback() {
FB.Canvas.setSize();
}
// Load the SDK Asynchronously
(function (d) {
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 = d.location.protocol + "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
} (document));
...
</script>
...
</body>
Firefox、MSIE 9、およびOperaで正常に動作します。ただし、WindowsのWebKitブラウザー(SafariおよびChrome)では機能しません。
Safariは、キャンバスiframeに対して次のコードを表示します。
<iframe class="canvas_iframe_util noresize" frameborder="0" scrolling="no" id="iframe_canvas" name="iframe_canvas" src='javascript:""' height="800" style="height: 800px; overflow-y: hidden; "></iframe>
私は何が間違っているのですか?Firefox、MSIE、Opera、Safari、Chromeで同時に動作させることは可能ですか?