2011-08-25 2 views
0
Uncaught ReferenceError: _onloadHook is not defined 

Pourquoi? Mon code est ci-dessous:Pourquoi ai-je cette erreur pour mon bouton J'aime Facebook?

<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<html> 
<head> 
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 
    <script type="text/javascript"> 
    //Initialize facebook 
     FB.init({ 
      appId : '12345', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true, // parse XFBML 
      channelUrl : 'http://www.abc.com/channel.html', // channel.html file 
     }); 
    </script> 
</head> 

<body> 
<div id="fb-root"></div> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
</body> 
</html> 

Éditer: Quand je ai plusieurs cela se produira. Quand j'ai seulement un bouton "envoyer", l'erreur n'est pas là.

Pour chaque bouton "Envoyer" supplémentaire, l'erreur se produit.

Répondre

1

Ceci est un bug sur la plateforme Facebook; il a déjà été signalé comme bug #20041.

0

place la bibliothèque Facebook JS et les scripts de code JS sous le fb-root div:

<!DOCTYPE html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> 
<html> 
<head> 

</head> 

<body> 
<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
//Initialize facebook 
    FB.init({ 
     appId : 'XXX', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     channelUrl : 'http://www.abc.com/channel.html', // channel.html file 
    }); 
</script> 
<fb:send href="http://abc.com/blah" font="lucida grande" ref="codes_popup"></fb:send> 
</body> 
</html> 
+0

Je l'ai mis dans document.ready pour JQuery mais ça se passe encore – user847495

+0

passons un pas à la fois, est-ce que cela a fonctionné? – ifaour

+0

@ifaour: Je l'ai directement sous la div 'fb-root' et je reçois la même erreur que l'OP Il semblait avoir juste commencé aujourd'hui – TMC

0

Je reçois la même erreur aujourd'hui exact.

Comme mentionné dans la documentation du FB, vous devez placer les balises FB <script> sous le <div id="fb-root"></div>. Cependant, dans son exemple et dans la documentation du FB, ils placent les scripts directement sous le <div id="fb-root"></div>. Je faisais ça et je recevais toujours l'erreur mentionnée par l'OP. J'ai finalement réussi à résoudre le problème en déplaçant les balises FB <script> en bas de la page, juste avant la balise de fermeture </body>. Je crois que ce qui se passait, c'est que certains de mes autres scripts interféraient avec le chargement des scripts FB. J'espère que cela pourra aider.

+0

vous avez mentionné OU vous devez utiliser [chargement asynchrone] (http://stackoverflow.com/questions/5334977/is-there-a-way-to-detect-if-the-facebook-javascript-sdk-loaded-successfully/ 5336483 # 5336483) – ifaour

0

Vous devriez appeler le javascript facebook en utilisant la méthode asynchrone mise à niveau. Cela fera en sorte que le DOM entier est chargé de sorte que la racine fb: est déjà sur la page.

http://developers.facebook.com/docs/reference/javascript/FB.init/

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'YOUR APP ID', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, // parse XFBML 
     channelUrl : 'http://www.yourdomain.com/channel.html', // Custom Channel URL 
     oauth : true //enables OAuth 2.0 
    }); 
    }; 

    (function() { 
    var e = document.createElement('script'); 
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
    e.async = true; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

également d'une importance cruciale est d'ajouter le support pour OAuth 2,0 http://developers.facebook.com/blog/post/525/

oauth : true 

Au 1 octobre, si vous ne disposez pas que vos applications ne fonctionneront pas correctement.

Questions connexes