我正在使用facebook javascript sdk在我的頁面中嵌入一個類似按鈕。facebook javascript sdk fb_xd_fragment?
什麼是fb_xd_fragment?我看到它追加到我的網址的末尾,如http://www.example.com/controller/?fb_xd_fragment,這導致一些討厭的遞歸重新加載頁面。
我正在使用facebook javascript sdk在我的頁面中嵌入一個類似按鈕。facebook javascript sdk fb_xd_fragment?
什麼是fb_xd_fragment?我看到它追加到我的網址的末尾,如http://www.example.com/controller/?fb_xd_fragment,這導致一些討厭的遞歸重新加載頁面。
幾個星期試圖找到一個解決方案,它看起來像需要什麼之後是這裏提到的自定義頻道網址:
http://developers.facebook.com/docs/reference/javascript/FB.init
我所做的只是創建channel.html文件,其中包含此單行:
<script src="http://connect.facebook.net/en_US/all.js"></script>
然後,我添加了channelUrl:行,以便最後的結果是這樣的:
<div id="fb-root"></div> <script>
window.fbAsyncInit = function() {
FB.init({
appId : 'MY APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.example.com/channel.html' // custom channel
}); };
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());</script>
確保在xfbml後添加逗號:如果它是最後一行,則爲true。我不熟悉Javascript,所以我不知道我是否充分利用了這一點,但我知道它防止了fb_xd_fragment問題,並允許在IE中使用FB註釋。據我所知,這是在線提供的唯一解決方案。任何進一步的調整是受歡迎的。
我這樣做了,並且還在我的標記中添加了xmlns:fb =「http://www.facebook.com/2008/fbml」,現在它正在工作!非常討厭的問題。我添加了你在那裏發佈的代碼,然後在頁面的下面打印出一個像框和評論框。 – 2011-03-16 12:09:29
你在channelURL中輸入的最終URL是什麼?我們在這裏試過了,在我們的服務器上有一個自定義的html頁面,它試圖創建一個「Facebook頁面」,真的很奇怪。 – Allov 2011-04-08 17:38:10
我不得不添加xmlns:fb =「facebook.com/2008/fbml」;正如費蘭所做的那樣,或者它會不斷地進行民意調查這是修復它的最後一點:) – Designer023 2012-06-26 10:06:31
此漏洞的修復程序可以在這裏找到:
http://wiki.github.com/facebook/connect-js/custom-channel-url
此鏈接已被破壞...任何人有更新? – philfreo 2010-10-26 18:41:30
雖然以上從GitHub似乎是回答另一個問題的答案,但它工作得很好。 更新:鏈接已損壞 - 請嘗試http://blog.colnect.com/2010/10/fbxdfragment-bug-workaround.html
a1anm的鏈接有助於清理此引起的混亂,但有一種方法可以防止它發生。
將'channelUrl'設置爲本地託管的頻道頁面。詳情請參閱http://threebrothers.org/brendan/blog/facebook-connect-ie-fb_xd_fragment-iframe/。
嗨,我可以直接把channelUrl:http://connect.facebook.net/en_US/all.js y nid另一個html ??? – Leon 2012-03-27 09:53:57
要約在幾天的研究和expriment與去年互聯網上所有的解決方案,我想出這個
變化結合您的網頁你的頭:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en-US">
這裏cocde把這個地方你想likeit按鈕:
<div class="yourclass" style="z-index: 10;">
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js" ></script>
<script>FB.init({appId: '1234yourappidhere', status: true, cookie: true, xfbml: true});</script>
<fb:like href="http..yourencodedurlswillputhere" layout="button_count" width="150" action="recommend" colorscheme="light"></fb:like></div>
<script> document.getElementsByTagName('html')[0].style.display='block';</script>
海峽黑客並沒有爲我工作。 所以,我只是在上面我的PHP所有其他內容文件添加一些代碼,301重定向到URL不fb_xd_fragment另外:
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if (isset($_GET['fb_xd_fragment'])) {
$url = str_replace("?fb_xd_fragment=","",$url);
header("HTTP/1.1 301 Moved Permanently");
header("Location: {$url}");
exit();
}
與像按鈕的iframe解決。
我使用腳本內的方法來定義channelUrl到我網站上的一個頁面,但我仍然有多個命中返回到該頁面。我注意到他們(Facebook)使用channelUrl進行了一些自己的內部調用,同時也傳遞了fb_xd_fragment - 我改用channelUrl的URL,將它從我的站點重定向。
我有我的網站上使用fbml而不是框架的多個Like按鈕,並且在IE7上,我不再使用fb_xd_fragment參數從Facebook獲得回擊。
不知道這是否是最佳做法,但它似乎工作。
我設置了channelUrl這個值:
'http://static.ak.fbcdn.net/connect/xd_proxy.php'
希望這有助於。
我得到相同的行爲,服務器遇到兩個請求 - 1與標準的URI;另一個使用URI?fb_xd_fragment。然而,這似乎只發生在IE - 更具體的IE7。你有沒有設法獲得更多的信息呢?所有這些都來自FB:http://forum.developers.facebook.com/viewtopic.php?pid=232516並且打開了一個錯誤:http://bugs.developers.facebook.com/show_bug.cgi?id=9777 – 2010-06-24 09:46:31
是的,對於IE7非常具體,我使用了Iframe版本,希望有人會修復這個錯誤。 – 2010-06-27 22:10:21