2010-06-02 5 views
9

J'ai un bouton Facebook comme sur ma page en utilisant le tag XBFML. Je pense que le code fonctionne, car il fonctionne dans Firefox sans problème.Facebook comme bouton montrant dans Firefox mais ne montrant pas dans IE

Mais dans IE 8 (fonctionnant en mode IE 7), le bouton ne s'affiche pas du tout.

Si je passe tout à la version iFrame du bouton J'aime, tout fonctionne. Mais quand je vais avec le tag XBFML ça ne marche pas.

Est-ce que quelqu'un court quelque chose comme ça?

Répondre

18

Essayez d'ajouter l'attribut xmlns au document HTML pour l'espace de noms FB:

xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" 

Ceci est un autre cas où Firefox est de trop indulgent vs IE.

+0

Merci, cela a fonctionné un régal! – CubanX

+0

a fonctionné parfaitement –

+1

Je charge Facebook comme asynchrone, et a trouvé que l'ajout des espaces de noms directement (par exemple via '$ ('html'). Attr ('xmlns: fb', 'http: // www ....')') n'a pas fonctionné. Je suis en train de déboguer le code de Facebook et ils semblent utiliser 'document.namespaces' pour lire les espaces de noms - et même après avoir ajouté l'espace de noms via jQuery,' document.namespaces ['xmlns: fb'] 'renvoie' undefined' . – ripper234

3

l'attribut: xmlns: fb = "http://www.facebook.com/2008/fbml" est mentionné comme "doit être utilisé" dans la documentation de Facebook Connect. Some pointers here.

+0

+1 pour lien et explication simple – Leftium

1

Je pense que j'ai une implémentation légèrement différente de vous, mais le même problème général de ne pas voir mes boutons sociaux Facebook dans IE seulement. Il s'est avéré que c'était parce que j'avais mis l'étiquette de script de Facebook au bas de ma page. La solution était de déplacer

<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> 

de sorte qu'il était avant mon bouton insertion:

<fb:like href="" send="true" layout="button_count" width="350" show_faces="true" font=""></fb:like> 

Ensuite, les boutons ont commencé à apparaître dans IE aussi bien.

0
if(document.namespaces) { 
    //IE 
    document.namespaces.add("fb", "http://ogp.me/ns#"); 
    document.namespaces.add("og", "http://ogp.me/ns/fb#"); 

    if (typeof(console) != 'undefined' && console) { 
     console.log("IE: OG and FB NameSpace added"); 
    } else { 
     //Other Browsers 
     var htmlRoot = jQuery(jQuery("html").get(0)); 
     if(typeof(htmlRoot.attr("xmlns:fb")) == "undefined") { 
      htmlRoot.attr("xmlns:og",'http://ogp.me/ns#'); 
      htmlRoot.attr("xmlns:fb",'http://ogp.me/ns/fb#'); 
      if (typeof(console) != 'undefined' && console) { 
       console.log("OG and FB NameSpace added"); 
      } 
     } 
    } 

ne pas mettre cela en fonction $ (document) .ready()!

Questions connexes