So schließen Sie ein facebook-SDK-dialog geöffnet, mit FB.ui - ()?
Bin ich erfolgreich anzeigen einen Freund einladen " - dialog (code siehe unten). Wenn Nutzer überspringen den iframe/dialog zeigt eine neue Seite. Aber von diesem Punkt ich kann nicht einen Weg finden, wie Sie in der Nähe der iframe/dialog. FB.ui nicht zurück jedes Objekt, scheint es nicht zu sein, eine Javascript-SDK-Methode und die Traversierung und Manipulation mit dem DOM wird spröde zu jedem FB-code-änderungen.
Irgendwelche Ideen?
function popupInviteForm(actionUrl) {
var fbmlString = '<fb:fbml>' +
' <fb:request-form type="POST" content="Play against me in game?" action="' + actionUrl + '" method="post" >' +
' <fb:multi-friend-selector target="_self" exclude_ids="" max="20" cols="4" rows="3" showborder="false" actiontext="Invite friends!" />' +
' </fb:request-form>' +
'</fb:fbml>';
FB.ui({
method: 'fbml.dialog',
fbml: fbmlString,
display: 'dialog',
size: {width:640,height:480}, width:640, height:480
});
$(".FB_UI_Dialog").css('width', $(window).width()*0.8);
}
(Hinweis: ich habe die gleiche Frage auf der facebook forum keine Reaktion. Ich werde aktualisieren, sollte es eine Antwort auf beiden.)
Den Javascript-code angepasst wurde von einem stack-überlauf Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe die gleichen Probleme. Zweiter Tag auf der Suche nach einer Lösung. Und nur eine Möglichkeit gefunden:
für das schließen aktiver FB-dialog, die Sie durchführen sollten, gefolgt code im parent-Fenster, in dem der FB-JS verfügbar ist und wo FB.ui genannt wurde:
Also, wenn Sie wollen, dass Ihr laden-dialog automatisch geschlossen, und nicht, Umleitungen auf andere Seite, verwenden Sie diese Schritte:
1) Set target attr und als "_self":
2) erstellen Sie einige callback-url/Seite Ihrer Website ein, zum Beispiel
https://mysite/close_dialog.html
3) Set-Aktion attr da gerade erstellte url:
4) In Ihrem close_dialog.html setzen Sie folgte JS:
UPDATE:
5) Es gibt eine Frage, was in dieser Art:
FB-iframe geladen von https, aber wenn Anfrage-Formular 'action' attr verwendet 'http' - Benutzer browser-Warnung. Aber wenn Anfrage-Formular 'action' auf 'https' - iframe mit js keinen Zugriff auf die Eltern geladen, die von 'http'.
Also, der Grund, warum Sie verwenden sollten Aktion von 'https'
Hoffe, das hilft
Wenn Euch eine bessere Lösung oder kann man verbessern auf diese Weise - bitte lassen Sie alle wissen das,
Vielen Dank für alle Kommentare
Nicht funktioniert (zumindest nicht für mich).
Was ich Tat, war einfach aufrufen der javascript-window.close (); - Funktion anstelle von top.Fenster.FB.Dialog.entfernen(top.Fenster.FB.Dialog._active"); und es funktioniert.
fand ich Igor Reschetnikow, die Antwort hat zwar funktioniert, aber nur wenn ich sicher, dass Sie erklären beide Seiten - Die eine, öffnet den dialog und close_dialog.html - als Teil der gleichen Domäne verwenden des document.domain. also oben in der script-tags in beiden Seiten, die Sie'ld hatte, dass Sie diese Zeile
natürlich ersetzen mysite.com mit dem, was immer Ihre Domäne ist
Den FB.ui, bietet sich die Möglichkeit für eine callback-Funktion, die ausgeführt werden, nachdem der FB.ui abgeschlossen ist.
Wird dies helfen, um Ihr problem zu lösen?
Dies schließt alle Dialoge, aber funktioniert möglicherweise nicht mit zukünftigen Versionen durch Zugriff auf interne variable
_loadedNodes
FWIW, mein browser privacy plugin verhindert FB schließen Sie den dialog. Ich wechselte aus dem privacy-plugin und das Dialogfeld schließt sich, wie erwartet.