我看了很多帖子,看看之前是否发布过,但事实并非如此.这是简短的版本:
我将通过示例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标记如下所示:
所以我知道这不是问题.
解决方法
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
http://forum.developers.facebook.com/viewtopic.php?id=23412
另外,我做了一些自举以防止出现空错误:
FB.Bootstrap.requireFeatures(["Connect"],function() { FB.init("--api-key--","domain/xd_receiver.htm"); FB.Connect.ifUserConnected(your_function_here); });