2009 年 4 月 8 日更新 - 我进入了新的一周,没有任何进展,也没有来自 Facebook 论坛的答案。那边没有一个回应,这很令人失望。我也无法弄清楚如何在这个问题上悬赏,但我真的很想解决这个问题。
我看了很多帖子,看看有没有以前发过,其实不是。这是简短的版本:
我正在浏览示例 FB Connect 教程 (v1),但无法使其在 Win7 上的 IE8 中运行。它在 Win7 上的 FF3 上按预期工作。
长版:
我很惊讶事情没有工作,因为我已经复制并粘贴了很多内容。我用 alert() javascript调用跳过了这一点,所以我把它放进去看看解析器是否能做到这一点。我将以下代码放入:
[my raw html]
Or use, <fb:login-button length="long" onlogin="alert('yo!!!');"></fb:login-button>
[/my raw html]
IE8 上没有弹出警报。它适用于FF。
当我改回调用 update_user_box() 时,我的 HTML 如下所示:
Or use, <fb:login-button length="long" onlogin="update_user_box();"></fb:login-button>
<script type="text/javascript">
function update_user_box() {
var user_box = document.getElementById("user");
user_box.innerHTML =
"<span>"
+ "<fb:profile-pic uid='loggedinuser' facebook-logo='true'></fb:profile_pic>"
+ "Welcome, <fb:name uid='loggedinuser' useyou='false'></fb:name>."
+ "You are signed in."
+ "</span>"
FB.XFBML.Host.parseDomTree();
}
FB.init("23e24c73feed7ca0f6afd876575842de", "../../Connect/xd_receiver.htm", { "ifUserConnected": update_user_box });
</script>
同样,这在 FF3 中也能正常工作。我的照片和一切都出现了。实际上,它在 FF3 中的工作比完全没有工作的情况更让我不安。
这是 IE8 中的见证行为:
当我单击 FBConnect 按钮时。javascript 窗口弹出并加载正确的登录页面
焦点变回主窗口(带有我的应用程序的窗口)
IE8 主窗口(我单击连接按钮的那个窗口)现在显示一个 facebook 登录页面。
当我在 FB javascript 窗口中输入我的凭据时,该页面会加载该页面的空白文档 URL:http://localhost:55994/Connect/xd_receiver.htm?fb_login&fname=_opener&session=%7B%22session_key%22%3A%223 .A4DpHk4nrKHooB7K_Q6EiA__.86400.1238796000-623225%22%2C%22uid%22%3A%22623225%22%2C%22expires%22%3A1238796000%2C%22secret%22%3A%22HtjtJS_xg8dX7TR7lLggew__%22%2C%22sig%22%3A%22ae12c0f98d4567612b70861314d42fbb %22%7D
查看该页面的源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>
5,如果我关闭该窗口并在应用程序窗口中键入我的凭据,则页面将使用 FBConnect 按钮重新加载。
正如我所说,我在 FF3 中得到了预期的行为,但在 IE8 中没有。我什至尝试过IE8的兼容模式,但也没有用。有人对正在发生的事情有任何线索吗?
我的 HTML 标签看起来像:
所以我知道这不是问题。