Comment fermer un facebook SDK dialogue ouvert avec FB.l'interface utilisateur()?
Je suis avec succès de l'affichage d'une invite ami de dialogue (code indiqué ci-dessous). Lorsque l'utilisateur clique sur ignorer l'iframe/boîte de dialogue affiche une nouvelle page. Cependant à partir de ce point, je ne peux pas trouver un moyen de fermer l'iframe/boîte de dialogue. FB.l'interface utilisateur ne retourne pas de n'importe quel objet, il ne semble pas être un SDK Javascript la méthode et de la traversée et de manipuler le DOM sera fragile pour toute FB modifications de code.
Des idées?
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);
}
(Note: j'ai posté la même question sur le facebook forum sans réponse. Je mettrai à jour à la fois, devrait-il y avoir une réponse.)
Le code Javascript a été adapté à partir d'un débordement de pile réponse.
OriginalL'auteur Nick | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
J'ai même de la difficulté. Deuxième jour à la recherche d'une solution. Et juste trouvé un moyen:
pour la fermeture de l'actif FB boîte de dialogue, vous devez effectuer le suivi de code dans la fenêtre parent où FB JS est disponible et où FB.l'interface utilisateur a été appelé:
Donc, si vous voulez que votre invite de dialogue automatique se ferme et ne pas redirige vers une autre page, utilisez ces étapes:
1) Définir la cible attr et que "_self":
2) créer des url de callback/page sur votre site, par exemple
https://mysite/close_dialog.html
3) Définir l'action attr comme créé url:
4) Dans votre close_dialog.html mettre suivie JS:
Mise à JOUR:
5) Il y a une question d'autre de cette manière:
FB iframe chargé par https, mais si la demande de la forme 'action' attr utilise 'http' - utilisateur recevra navigateur avertissement. Mais si la demande de la forme 'action' a 'https' - js iframe ne peut pas accéder à un parent chargé par "http".
Donc, c'est la raison pour laquelle vous devriez utiliser l'action par "https"
Espère que cette aide
Si vous avez une meilleure solution ou vous pouvez améliorer de cette façon - s'il vous plaît laissez le savons tous,
Merci pour tous les commentaires
OriginalL'auteur Igor Reshetnikov
Qui ne fonctionne pas (du moins pas pour moi).
Ce que j'ai fait était tout simplement appeler le javascript de la fenêtre.close(); fonction plutôt que d'en haut.de la fenêtre.FB.La boîte de dialogue.supprimer(haut.de la fenêtre.FB.La boîte de dialogue._active); et il fonctionne.
OriginalL'auteur Luis Fernando
j'ai trouvé Igor Reshetnikov réponse n'travail, mais seulement si j'ai pris soin de déclarer les deux pages de celui qui ouvre la boîte de dialogue et close_dialog.html - comme faisant partie du même domaine à l'aide de document.domaine. donc, en haut de la balises script dans les deux pages que vous'ld dû ajouter cette ligne
évidemment en remplaçant mysite.com avec ce que jamais votre nom de domaine est
OriginalL'auteur nathajamal
Le FB.l'interface utilisateur fournit une option pour une fonction de rappel qui sera exécuté après le FB.l'interface utilisateur est terminée.
Cela vous aidera à résoudre votre problème?
OriginalL'auteur Bennet
Ce bouton permet de fermer toutes les boîtes de dialogue, mais peut ne pas fonctionner avec les versions à venir en raison de l'accès de la variable interne
_loadedNodes
OriginalL'auteur James Westgate
FWIW, mon navigateur de confidentialité du plugin a été la prévention de FB à partir de la fermeture de la boîte de dialogue. J'ai juste éteint la vie privée de plugin et le dialogue lui-même fermé comme prévu.
OriginalL'auteur robbie b