Comment contourner 'FB n'est pas défini"?
Parfois je me fais de la "FB n'est pas défini" problème lors du chargement de la http://connect.facebook.net/en_US/all.js
J'ai réalisé que le problème est que parfois mon site il suffit de ne pas charger ce fichier. Donc, il ne reçoit rien, et l'objet FB littéralement n'existe pas.
Ma solution est de prévenir mes utilisateurs lorsque cela se produit, j'ai donc essayé les codes suivants dans le code JavaScript, mais aucune ne semble fonctionner:
if (FB) {/*run the app*/} else {/*alert the user*/}
if (FB!==false) {/*run the app*/} else {/*alert the user*/}
if (FB!='undefined') {/*run the app*/} else {/*alert the user*/}
merci pour la réponse!
Vous devez vous connecter pour publier un commentaire.
En supposant que FB est une variable qui contient le Facebook de l'objet, je voudrais essayer quelque chose comme ceci:
Afin de tester que quelque chose n'est pas défini dans le bon vieux JavaScript, vous devez utiliser le "typeof" de l'opérateur. L'exemple de vous montrer où vous venez de le comparer à la chaîne 'undefined' évaluera à faux, à moins que votre FB objet vraiment ne contient la chaîne 'undefined'!
En aparté, vous pouvez utiliser divers outils comme Firebug (dans Firefox) afin de voir si vous pouvez travailler sur pourquoi le Facebook de fichier ne se charge pas.
Je pense que vous devriez résoudre le principal problème au lieu de cela, la solution est fournie par Facebook (Chargement du SDK de manière Asynchrone):
De la la documentation:
Mise à JOUR: à l'aide de la dernière version du code à partir de la documentation.
Je suppose que vous avez manqué de mettre de point-virgule
;
à l'accolade fermante}
dewindow.fbAsyncInit = function() { ... };
Pour ceux qui sont encore obtenu ce FB bug, j'utilise cette effrontée pour résoudre ce problème.
Au lieu de http://connect.facebook.net/en_US/all.js, j'ai utilisé HTTPS et l'a transformée en https://connect.facebook.net/en_US/all.js
et il a fixé mon problème.
Il y a la solution pour vous 🙂
Vous devez exécuter votre script une fois la fenêtre chargé
si vous utilisez jQuery, vous pouvez utiliser de façon simple:
Vous étiez très proche de l'original de votre exemple. Vous pouvez soit utiliser @jAndy de la suggestion ou de l':
C'est assez étrange pour FB de ne pas être chargé dans votre javascript si vous avez la balise de script n'correctement. Vérifiez que vous n'avez pas de javascript bloqueurs de bloqueurs de publicité, de suivi-bloquants etc installé dans votre navigateur, qui neutraliser votre FB de code de connexion.
J'avais FB jamais défini. S'est avéré que j'ai été le prototypage des fonctions dans la classe de l'Objet appelé "fusion" et un autre appelé "toArray".
Ces deux foiré Facebook, pas de messages d'erreur mais il ne serait pas charge.
J'ai changé les noms de mes prototypes, il fonctionne maintenant. Hey, si Facebook va prototype de l'Objet, ne devrais-je pas être autorisés à prototype il?
FB recommande d'ajouter l'async all.js inclure la droite après le corps, de sorte que FB objet préparez-vous lorsque vous l'utilisez dans la page.
Vous pouvez également avoir un délai artificiel à l'aide de setTimeout pour s'assurer FB objet est chargé. par exemple,
À partir de la documentation: Le Facebook SDK JavaScript n'ont pas autonome des fichiers qui ont besoin d'être téléchargé ou installé, au lieu de cela, il vous suffit d'inclure un court morceau de régulières JavaScript dans le HTML, tha
J'ai eu un problème similaire et il s'est avéré être bloqueur de pub Pro. Assurez-vous de vérifier que ce produit ou d'autres extensions de blocage ont été désactivés. J'ai perdu environ 1h 30 minutes à cause de cela. Se sentir comme un noob 😉
Vérifier div id="fb-root" /div" !!! Il est très important de s'exécuter.