2013-04-12 16 views
5

Mamy problem z Facebookiem jsssdk w sposobie ładowania elementów iframe. Nasza aplikacja jest w pakiecie ze stbuildiem do aplikacji na iOS (oprócz tego, że jest obsługiwana przez http jako strona internetowa mobiel).Facebook: Problemy ze względu na bezsensowne // iframe src dla podobnych przycisków

W "trybie iOS" źródłem Twojej aplikacji jest file:///[...]/index.html. Styl Facebooka bez schematu łamie się dla nas, ponieważ //connect.facebook.net/en_US/all.js tłumaczy się na . Dlatego zaktualizowaliśmy nasz fragment kodu do:

(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)); 

Jednak Facebook sdk utworzy ramki iframe dla pojedynczych przycisków. Mają one również <iframe src="//..." > i są łamane. Nie znalazłem sposobu na wymuszenie korzystania z sdk w celu korzystania ze schematów adresów URL.

Czy ktoś ma pomysł? Dzięki

+1

Jako "szybką naprawę" możesz samodzielnie wygenerować kod iframe ... (jeśli nie musisz słuchać zdarzeń edge.create). – CBroe

+0

+1, po prostu użyj wersji wtyczki iframe? – Igy

+0

Nie musimy słuchać żadnych wydarzeń. Wolałbym jednak używać SDK, ponieważ łatwiej będzie go zintegrować, ponieważ dynamicznie dodajemy przyciski do widoku. Sugeruję, abyś sformułował to jako odpowiedź, a jeśli nie ma sposobu na ustawienie schematu URL, który będzie używany z JS SDK, zaakceptuję go. –

Odpowiedz

0

Możesz po prostu użyć https:// we wszystkich kodach iframe i innych plikach, które umieszczasz na swojej stronie internetowej. Będzie on nadal działał poprawnie na zwykłym połączeniu http i połączeniach https. To najlepszy sposób, aby zapobiec takim problemom.