2012-01-08 53 views
2

我一直在嘗試配置新的Facebook JavaScript API與我的網站,但我面臨的問題與Firefox(Chrome和Safari瀏覽器工作得很好,還沒有完全在IE上測試,但已被告知沒有問題)。與Firefox 8的Mac的問題:window.name是未定義的

問題被指出了Facebook的all.js文件的開頭,與消息說

window.name is undefined 
if(!window.FB)window.FB={_apiKey:null,...return document.getElementById(a);}}; 
all.js (line 3) 

因此,任何後續使用FB訪問的SDK。結果錯誤,指出

FB is not defined 
[Break On This Error] FB.login(function(response) 

,我用的代碼是

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : 'my_app_id', // App ID 
    channelURL : 'my_channel_file', // Channel File 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    oauth  : true, // enable OAuth 2.0 
    xfbml  : true // parse XFBML 
    }); 
    startLoad(); 

};

// Load the SDK Asynchronously 
    (function(d){ 
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
     js = d.createElement('script'); js.id = id; js.async = true; 
     js.src = "//connect.facebook.net/en_US/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

任何有關這個問題的線索?有沒有人遇到過這個錯誤?

+0

調用FB.login'在哪裏? – nav 2012-01-08 22:16:05

+0

它在上面提到的startLoad()函數中調用。再次,我想提到它在鉻和Safari瀏覽器中完美工作,但不是在FF – 2012-01-09 09:47:37

+0

問題已解決(請參閱下面的答案) – 2012-01-09 17:30:06

回答

3

解決:令人難以置信的是,唯一的小錯誤是我在名爲「name」的JS文件中使用了一個全局變量。這是Facebook SDK的一個嚴肅的禁忌(儘管在任何地方都沒有提到)。我在一個我不記得的鏈接上找到了推理,但主要的問題是全局名稱變量與FB api所需的window.name格格不入。

我只是建議避免一個名爲全局變量,無論您是否使用Facebook SDK。以防萬一。

+0

有同樣的問題,現在它的工作原理重命名爲全局'var name'。 thx的提示! – 2012-01-15 23:13:32

+0

很高興我能幫助你。這個問題幾乎沒有記錄,讓我永遠找到它。 – 2012-01-19 17:47:50

+0

太棒了!我也有這個確切的問題。奇怪的是,它隻影響Firefox - 事情在Chrome上運行良好。 Facebook上的糟糕表單取決於這種命名不佳的全局變量! – devios1 2012-04-17 17:49:44