我已经构建了一个用作页面标签的应用程序 由于其内容太长,我需要设置iframe高度,以便没有滚动条 我的问题是它在chrome&即,但不是在Firefox中 这就是我所做的:
<?php
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
* {
padding:0; margin:0; border: none; outline:none
}
</style>
</head>
<body style="width:520px; overflow:hidden">
<?php
if (empty($data["page"]["liked"])) {
echo "<img src=\"img/blur.jpg\" />";
}
else {
echo "<img src=\"img/fan.jpg\" />";
}
?>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'xxx_app_id',
status : true,
cookie : true,
xfbml : true
});
</script>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize({ width: 520, height: 3591 });
}
function sizeChangeCallback() {
FB.Canvas.setSize({ width: 520, height: 3591 });
}
</script>
</body>
</html>
此外,我完成了相同的应用程序3-4次并且它工作,所以现在我只是更改了要显示的图像。
看看Firebug控制台我看到没有错误,并检查应用的css(再次来自firebug)我看到iframe 800px的高度。
答案 0 :(得分:1)
好的,显然fbAsyncInit从未被调用过,所以我通过手动调用方法解决了这个问题:
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.Canvas.setSize({ width: 520, height: 3591 });
}
function sizeChangeCallback() {
FB.Canvas.setSize({ width: 520, height: 3591 });
}
window.fbAsyncInit();
</script>
现在一切正常 如果有人有任何线索,为什么这只发生在ff和仅在这个应用程序中(正如我在问题中所说,我已经建立了3-4次精确的应用程序 - 只有不同的图像和文本 - )我很感激在这里分享...