gpt4 book ai didi

IE7 中的 Facebook channelUrl 递归问题

转载 作者:行者123 更新时间:2023-12-02 21:37:01 24 4
gpt4 key购买 nike

我正在为一个网站异步加载 FB JS SDK,该网站具有一些共享功能(将文章、视频、照片等共享到用户的时间线)。大多数情况下一切工作正常,但在 IE7 中我注意到不断有请求发送到我的channelUrl。它们似乎永远不会结束。它并没有完全破坏网站,但我不想继续发送所有这些请求。我不确定是什么原因导致这种情况发生,任何帮助将不胜感激。

我的应用程序设置如下:应用程序域 - mydomain.com网站网址 - http://mydomain.com(注意:如果不清楚,mydomain 只是我用于该问题的一个示例。)

我的 FB.Init 调用是

    FB.init({
appId: XXXXXXXXXXXXX,
channelUrl: '//' + window.location.hostname + '/channel.html',
status: true,
cookie: true,
xfbml: true
});

最佳答案

根据文档,您可能需要编辑 channel URL 文件的缓存,以确保不会发生这种情况:

http://developers.facebook.com/docs/reference/javascript/ -- 向下读到标题为“ channel 文件”的位置

引用:“ channel 文件尽可能长时间地缓存非常重要。在提供此文件时,您必须发送具有较长过期时间的有效 Expires header 。这将确保 channel 文件被浏览器缓存,这对于流畅的用户体验。如果没有适当的缓存,跨域通信将变得非常缓慢,用户体验将严重下降。在 PHP 中实现此目的的一个简单方法是:“

 <?php
$cache_expire = 60*60*24*365;
header("Pragma: public");
header("Cache-Control: max-age=".$cache_expire);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>

“ channel 文件”的意义在于它有助于跨域ajax请求。如果它没有被缓存,FB api 每次想要从 facebook 本身插入和执行一些 javascript 时都会请求它。如果您将其缓存在客户端的浏览器上,它只会使用空白 html 文件的本地副本,而不是每次想要执行此操作时都会引发请求。看一下跨域ajax请求是如何执行的。我会去研究一个好的链接,然后回来描述 xdr(跨域请求)。

编辑:

关于IE7 中的 Facebook channelUrl 递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com