Ich habe erfolgreich einen Einladungs-Freundendialog angezeigt (Code unten gezeigt). Wenn der Benutzer auf Überspringen klickt, zeigt der iFrame / Dialog eine neue Seite an. Aber von diesem Punkt aus kann ich keinen Weg finden, wie ich den Iframe / Dialog schließen kann. FB.ui gibt kein Objekt zurück, es scheint keine JavaScript SDK-Methode zu geben, und das Verschieben und Manipulieren mit dem DOM wird für alle FB-Code-Änderungen brüchig.
Irgendwelche Ideen?
%Vor%(Hinweis: Ich habe die gleiche Frage im Facebook-Forum ohne Antwort gepostet. Ich werde beides aktualisieren, sollte es eine Antwort geben.)
Der JavaScript-Code wurde von einem Stapelüberlauf angepasst Antwort .
Ich habe die gleichen Probleme. Zweiter Tag auf der Suche nach einer Lösung. Und gerade einen Weg gefunden: Zum Schließen des aktiven FB-Dialogs sollten Sie den folgenden Code im übergeordneten Fenster ausführen, wo FB JS verfügbar ist und wo FB.ui aufgerufen wurde:
%Vor%Wenn Sie also möchten, dass Ihr Einladungsdialog automatisch geschlossen wird und Sie nicht auf eine andere Seite umleiten, verwenden Sie diese Schritte:
1) Setzen Sie den Zielattrtr von und als "_self":
target="_ self"
2) Erstellen Sie beispielsweise eine Callback-URL / Seite auf Ihrer Site
https://mysite/close_dialog.html
3) Setzen Sie die Aktion attr als gerade erstellte URL:
action="http: //mysite/close_dialog.html"
4) In Ihrem close_dialog.html put folgt JS:
%Vor%UPDATE:
5) Es gibt ein anderes Problem auf diese Weise: FB iframe wird von https geladen, aber wenn die Anfrage-Form "action" attr "http" verwendet, erhält der Benutzer eine Browser-Warnung. Aber wenn Anfrage-Formular 'Aktion' hat 'https' - Iframe js kann nicht auf Eltern zugreifen geladen von 'http'. Also, es ist der Grund, warum Sie eine Aktion von 'https' verwenden sollten
Hoffe, das hilft
Wenn Sie eine bessere Lösung haben oder Sie können dies verbessern - bitte teilen Sie dies alles mit, Danke für Kommentare.
Das geht nicht (zumindest nicht für mich).
Was ich getan habe, war einfach das Javascript window.close (); Funktion statt top.window.FB.Dialog.remove (top.window.FB.Dialog._active); und es funktioniert.
%Vor%Ich fand, dass die Antwort von Igor Reshetnikov funktioniert hat, aber nur, wenn ich sichergestellt habe, dass beide Seiten - die, die den Dialog öffnet, und close_dialog.html - als Teil der gleichen Domäne deklariert werden, die document.domain verwendet. Also oben in den Skript-Tags in beiden Seiten musstest du diese Zeile hinzufügen
%Vor%ersetzt offensichtlich mysite.com durch was immer Ihre Domain ist
Dies schließt alle Dialoge, funktioniert aber aufgrund des Zugriffs auf die interne Variable _loadedNodes
Tags und Links javascript facebook facebook-javascript-sdk