Facebook在Chrome中提供"不安全的JavaScript尝试访问带URL的框架"错误

a7d*_*rew 60 javascript facebook google-chrome

我的样本Facebook应用程序昨天在Chrome中运行良好.该页面通过JavaScript SDK集成了Silverlight广告Facebook.我可以查看基本登录状态,登录Facebook,获取您的姓名并注销.

今天,在我没有任何变化的情况下,Chrome在Google搜索结果中出现了一个非常常见的JavaScript错误,但没有真正的答案.它仍然适用于IE和Firefox.

这是公共网址:

http://www.andrewdothay.net/prj/facebook/

当您在Chrome中打开JavaScript控制台时,会抛出大量的错误:


不安全的JavaScript尝试使用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&显示=弹出&fbconnect = 1&语言环境= EN_US&方法= AUTH.登录&下一= 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% 26帧%3Df3760623c%26result%3DxxRESULTTOKENxx&return_session = 1&sdk = joey&session_version = 3&v = 1.0来自URL http://www.andrewdothay.net/prj/facebook/.

域,协议和端口必须匹配.


关于Chrome发生了什么的任何想法?


更新

当我调用FB.login()时,我发现当今机器上的Chrome阻止了登录弹出窗口,但我知道我昨天没有在JavaScript控制台中收到这190条错误消息.

因此,当我允许Chrome中的弹出窗口时,它确实适用于最终用户,但所有这些新的错误消息都会破坏我作为开发人员的诊断体验.

Müc*_*maz 29

我找到了解决方案.如果在没有用户操作的情况下执行FB.login,webkit将阻止弹出窗口.

例如,我在我的项目中使用了一个邀请系统.输入/文本输入邀请代码.我检查了邀请代码是否有ajax/post请求.如果它可用,我运行FB.login().正如您所猜测的,浏览器阻止了弹出窗口,并且在js控制台上出现了大量错误.

因此,您必须在用户操作后运行FB.login().我将在ajax/post和FB.login()之间放置一个facebook登录按钮.用户必须点击它 - 很糟糕 - 但他们不会看到问题.

顺便说一下,问题在几天后再次发生.我认为这是关于浏览器的信任系统.当你开发它时,你经常访问很多次,浏览器认为它最初是可靠的.我不确定这部分,但我的解决方案有效.


Met*_*eta 5

在我的情况下,这是因为facebook JS在单页上多次加载:一个用于登录,第二个用于"喜欢"按钮.删除"喜欢"模块中的引用可以保存当天.