Javascript: Mio fbAsyncInit() il metodo non viene chiamato

Sto copiando il codice a destra, fuori questa pagina su Facebook per gli sviluppatori del sito web e il fbAsyncInit() il metodo non si attiva mai. Ho anche letto questa pagina, ho modificato il codice in diversi modi, e io non posso ottenere il metodo di fuoco. I tuoi pensieri?

Anche, per quel che vale, quando provo ad eseguire questo codice e Chrome (su Mac) ed eseguire Firebug lite, mi appare un errore che dice “Firebug Lite non può essere caricato in questa pagina”

Ecco il codice…

<html>
<head>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '1234567890', //App ID
      channelUrl : '//localhost/test.html', //Channel File
      status     : true, //check login status
      cookie     : true, //enable cookies to allow the server to access the session
      xfbml      : true  //parse XFBML
    });

    alert("this statement never gets called either");
  };

  //Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
   }(document));
</script>
</script>
</body>
</html>
  • il file è chiamato test.html ?
  • sì, è un problema?
  • Ci sono errori js?
  • no, non ci sono errori js
  • Il browser il collaudo? Provare a cambiare src per alcune inesistente e controllare i registri di errore nel browser dopo che.



6 Replies
  1. 7

    Ho avuto lo stesso problema. Sembrava ho caricato la libreria JavaScript //connect.facebook.net/en_US/all.js in altro luogo, prima che il caricamento asincrono.

    Che probabilmente confuso un po ‘ le cose.

    Ho rimosso la prematura di carico definizione di tag e ora sto bene.

    • Questo ha funzionato per me! Grazie.
    • Questa è la soluzione per il problema!
  2. 5

    Hai un problema con Sincrona di carico?

        <script src="//connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({
        appId      : 'YOUR_APP_ID',
        channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', //Channel File
        status     : true, //check login status
        cookie     : true, //enable cookies to allow the server to access the session
        xfbml      : true  //parse XFBML
      });
    </script>
    • Sì, quando ho regolare il codice a guardare come il vostro codice sincrono, il metodo di avviso ancora non si attiva mai. Che cosa dà? Solo quando è possibile rimuovere il FB.il metodo init() il metodo di avviso incendio
    • Non so… questo ragazzo è carico in modo asincrono e sembra di lavorare per lui: facebook.stackoverflow.com/questions/2855784/… il codice all’inizio funziona, se hai letto la risposta, che ha appena ottenuto per mettere nella giusta appid
    • sembra che egli è aggiungere il seguente script per il fb-root div, invece che alla testa.
    • Questo script è un esempio da Facebook developers.facebook.com/docs/reference/javascript
    • Ha ottenuto la sua iniziale codice di quella pagina
    • Grazie, Mikey G, I giocare con l’AppID. Non ho ancora capito perché l’istruzione alert non viene chiamata. Anche se il metodo di inizializzazione non riuscita perché l’appID non era corretto, sembra che il metodo di avviso deve ancora chiamato, no?
    • Dovrebbe essere, e penso che si può prendere quella finestra.fbAsyncInit non è sempre chiamato
    • Inoltre, per quel che vale, quando provo ad eseguire questo codice e Chrome (su Mac) ed eseguire Firebug lite, mi appare un errore che dice “Firebug Lite non può essere caricato in questa pagina”
    • Se avete ancora problemi con questo, vorrei passare a sincrono. Penso che potrei dire che 1) fb javascript è 263kB, che è pesante per un js file, ma circa lo stesso come una pagina, e 2) Se l’utente ha già visitato la tua pagina, o di qualsiasi altro sito che utilizza il file js (come facebook e un sito che ha un fb app) sarà memorizzato nella cache e non hanno bisogno di scaricare comunque.
    • Ho provato a caricarlo in modo sincrono utilizzando il codice che hai postato sopra, ho stil hanno lo stesso problema. Io sono del parere che tutto questo non ha nulla a che fare con il caricamento asincrono o non corretto appid, ma, invece, la struttura del codice è incasinato in qualche modo. Non capisco perché firebug lite non può caricare questa pagina, ma è possibile caricare tutte le altre pagine. Comunque, +1 per il tuo aiuto! Grazie.
    • Nessun problema, spero che si ottiene è capito

  3. 5

    Si dovrebbe cambiare:

     js.src = "//connect.facebook.net/en_US/all.js";

    a:

     js.src = "http://connect.facebook.net/en_US/all.js";
    • questa fissa per me…
    • wtf?? non so come avrei mai pensato che wtthout COSÌ
    • non va bene, questo si romperà la vostra app se si sta caricando da HTTPS. se si dispone di forzare il protocollo, assicurarsi di utilizzare HTTPS.
    • È meglio lasciare il protocollo off, oppure come @maskedbacon detto, l’utilizzo di https
    • Questa fissa per me…. Interessante notare, dopo l’aggiunta di protocollo e ricaricare la pagina, un sacco di ciò che appare come facebook messaggi di inizializzazione, si presentò nella console (firefox). Avevo appena creato il FB app è stato fatto riferimento.
    • sir ho provato, ma non funziona per me.
    • Ha funzionato per me, appena cambiato il http per https.

  4. 1

    Questa risposta è probabilmente troppo tardi e per molti casi suol aiutare ma, ho scoperto che il mio browser Firefox dopo qualche lavoro decente a quanto pare avere un po ‘ pazzo e la causa di errore esatto… basta riavviare il dannato

    • OK ho appena trovato l’esatta origine del mio problema, io uso FF per sviluppare e utilizzare l’area di lavoro (Strumenti->Web Developer->Appunti) da tempo a tempo…. da qualche ragione che la causa di questo problema, anche se mi basta fare un semplice alert() c’è… la speranza è di aiuto a qualcuno
    • OK ignora”, anche se” di cui sopra, si causa il problema, QUANDO un alert (), è rilasciata dall’area di lavoro
    • bugzilla.mozilla.org/show_bug.cgi?id=678971
  5. 0

    Dal momento che sia il tuo file si chiama test.html e il channelUrl dovrebbe essere test.html la creazione di un riferimento circolare. Per il corretto channelUrl si suppone contenga una riga

    <script src="//connect.facebook.net/en_US/all.js"></script>

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

    Il file channel risolve alcuni problemi con croce domini di comunicazione
    in alcuni browser. Il contenuto del channel.html il file può essere solo
    una singola linea:

    <script src="//connect.facebook.net/en_US/all.js"></script>

    È importante per il canale di file per la memorizzazione nella cache per quanto
    possibile. Al momento di servire questo file, è necessario inviare una valida Scade intestazioni
    con un lungo periodo di scadenza. In questo modo il canale di file è
    di cache del browser, che è importante per un’esperienza utente uniforme.
    Senza una corretta memorizzazione nella cache, croce domini di comunicazione diventerà molto
    lento e gli utenti possono soffrire di un forte degrado esperienza. Un semplice
    modo per farlo in PHP è:

     <?php  $cache_expire = 60*60*24*365;  header("Pragma: public");  header("Cache-Control: max-age=".$cache_expire);  header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');  ?>  <script src="//connect.facebook.net/en_US/all.js"></script>

    Il channelUrl parametro è opzionale, ma consigliato. Fornire un
    canale di file che può aiutare a risolvere tre problemi specifici. Prima,
    le pagine che includono il codice per comunicare tra frame può causare Sociale
    Plugin per mostrare come vuoto senza un channelUrl. In secondo luogo, se non
    channelUrl è fornito e una pagina include auto-riproduzione di file audio o
    video, l’utente può ascoltare due flussi audio perché la pagina è
    è stato caricato un secondo tempo in background per il cross di dominio
    comunicazione. Terzo, un canale di file di evitare l’inclusione di extra
    colpisce nel vostro lato server log. Se non si specifica un channelUrl, si
    può rimuovere visualizzazioni di pagina contenente fb_xd_bust o fb_xd_fragment
    i parametri di registri per garantire la corretta conta.

    Il channelUrl deve essere un URL completo, corrispondente alla pagina
    che si include l’SDK. In altre parole, il file channel dominio
    deve includere www se il tuo sito è servita tramite www, e se si modifica
    documento.dominio della pagina è necessario effettuare il documento stesso.dominio
    cambiamento nel channel.html file come bene. I protocolli devono anche
    partita. Se la tua pagina è servita su https, il channelUrl deve anche essere
    https. Ricordatevi di utilizzare il corrispondente protocollo per lo script src come
    bene. Il codice di esempio precedente utilizza il protocollo relativo Url che dovrebbe
    gestire la maggior parte https casi in modo corretto.

    • Grazie, DMC, ho rimosso opzionale channelUrl parametro e questo metodo ancora non si attiva mai. I tuoi pensieri?
    • Provare a rimuovere uno dei due fine </script> tag come extra e potrebbe essere causa di il vostro browser non piace.
    • sì ho risolto, non mi ha fatto
    • Sei sicuro, il solo html che hai è quello che hai postato?? Hai javascript disabilitato nel tuo browser?
  6. 0

    Si prega di Modificare le App ID e Poi Iniziare a Lavorare

      <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId            : 'your-app-id',
          autoLogAppEvents : true,
          xfbml            : true,
          version          : 'v2.11'
        });
      };
    
      (function(d, s, id){
         var js, fjs = d.getElementsByTagName(s)[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement(s); js.id = id;
         js.src = "https://connect.facebook.net/en_US/sdk.js";
         fjs.parentNode.insertBefore(js, fjs);
       }(document, 'script', 'facebook-jssdk'));
    </script>

Lascia un commento