我的示例Facebook应用昨天在Chrome中运行良好。该页面通过JavaScript SDK集成了Silverlight广告Facebook。我可以检查基本的登录状态,登录Facebook,获取您的姓名并注销。
如今,我一无所获,但它在Chrome中已损坏,但JavaScript错误在Google搜索结果中非常常见,但没有真正的答案。在IE和Firefox中仍然可以很好地工作。
这是公共(public)网址:
http://www.andrewdothay.net/prj/facebook/
当您在Chrome中打开JavaScript控制台时,会引发大量此类错误:
不安全的JavaScript尝试使用URL访问框架
URL框架http://www.facebook.com/login.php?api_key=151352704876752&cancel_url=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23cb%3Df1175dd3f%26origin%3Dhttp%253A%252F%252Fwww.andrewdothay.net%252Ff304d89d8%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df3760623c%26result%3DxxRESULTTOKENxx&channel_url=http%3A%2F%2Fwww.andrewdothay.net%2Fprj%2Ffacebook%2F&display=popup&fbconnect=1&locale=en_US&method=auth.login&next=http%3A%2F%2Fstatic.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%23cb%3Df3c546942%26origin%3Dhttp%253A%252F%252Fwww.andrewdothay.net%252Ff304d89d8%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df3760623c%26result%3DxxRESULTTOKENxx&return_session=1&sdk=joey&session_version=3&v=1.0中的http://www.andrewdothay.net/prj/facebook/。
域,协议(protocol)和端口必须匹配。
您对Chrome的最新动态有何想法?
更新
我发现今天的机器上的Chrome浏览器在我调用FB.login()时阻止了登录弹出窗口,但是我知道昨天我没有在JavaScript控制台中收到这190条错误消息。
因此,当我允许Chrome浏览器中的弹出窗口时,它确实适用于最终用户,但是所有这些新的错误消息都使我作为开发人员的诊断经验丧失了。
最佳答案
我找到了解决方案。如果在没有用户操作的情况下执行FB.login,则webkit会阻止弹出窗口。
例如,我在项目中使用了一个邀请系统。有输入内容/文字可输入邀请码。我检查了邀请代码是否可用于ajax/post请求。如果可用,我运行FB.login()。您可能猜到了,浏览器阻止了弹出窗口,并且在JS控制台上出现了大量错误。
因此,您必须在用户操作后运行FB.login()。我将在ajax/post和FB.login()之间放置一个Facebook登录按钮。用户必须单击它-糟透了-但他们不会看到问题。
顺便说一句,几天后问题再次出现。我认为与浏览器的信任系统有关。开发它时,您会多次访问,浏览器认为它一开始就可靠。我不确定这部分,但是我的解决方案有效。