2013-04-12 95 views
5

我們在加載iframe的方式上與Facebook jsssdk有問題。 我們的應用程序與stbuild捆綁到iOS應用程序中(除了通過http作爲mobiel網頁提供服務外)。Facebook:由於無模式/ iframe src的類似按鈕造成的問題

在「iOS模式」中,您的應用程序的來源是file:///[...]/index.html。 Facebook無計劃的url風格正在爲我們打破,因爲//connect.facebook.net/en_US/all.js轉換爲file:///connect...。因此,我們更新了我們的代碼段:

(function(d, s, id, debug){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/" + bp.lib.Facebook.getCurrentLocale() + "/all" + (debug ? "/debug" : "") + ".js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk', /*debug*/ false)); 

然而,Facebook的SDK將創建類似按鈕的個人I幀。這些也有一個<iframe src="//..." >,並打破。我沒有找到一種強制使用url方案的方法。

有沒有人有想法?謝謝

+1

作爲一個「快速修復」,您可以自己生成iframe代碼...(如果您不需要監聽edge.create事件)。 – CBroe

+0

+1,只需要自己使用iframe插件版本? – Igy

+0

我們不需要聽任何事件。不過,我更願意使用SDK,因爲在我們動態地將按鈕添加到視圖中時,它將更容易集成。我建議你制定這個作爲你的答案,如果沒有辦法設置URL方案用JS SDK我會接受它。 –

回答

0

您可以在您的網頁上包含的所有iframe代碼和其他文件中使用https://。然後,它仍然可以通過正常的http連接和https連接正常工作。這是防止這種問題的最佳方法。