2011-05-12 24 views

Odpowiedz

10

W rzeczywistości problemem jest to, że strony używają różnych skryptów do załadowania modułu FBConnect.

Na http://www.thegreekmerchant.com/:

<div id="fb-root"></div> 
    <script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
     appId : '146943825373452', 
     status : true, // check login status 
     cookie : true, // enable cookies to allow the server to access the session 
     xfbml : true, 
     logging: '0' 
     }); 

     jQuery(document).trigger('fb:init'); 
    }; 

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

Na http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo istnieją dwa skrypty, poprzedni i następujące jeden:

<div id="fb-root"></div><script type="text/javascript"> 
window.fbAsyncInit = function() { 
    FB.init({ 
    appId: "146943825373452", 
    status: true, 
    cookie: true, 
    xfbml: true 
    }); 

    FB.Event.subscribe("edge.create", function(href, widget) { 
     _gaq.push(["_trackEvent", "Facebook like", "Drupal", href]); 
    }); 


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

Mam zastąpił pierwszy scenariusz z drugim i http://www.thegreekmerchant.com/ teraz działa (oczywiście nie jest to wersja ostra, ale na moim serwerze sandbox). Potrzebujesz tylko drugiego skryptu na http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo.

+0

Czy nie myśli, aby dodać go do drugiej strony, jako że strona działa już ... – coderama

+0

@RD W rzeczywistości nie musisz zmieniać 'http: // www.thegreekmerchant.com/product/fokofpolisiekar/band-logo', ale jednak zdecydowanie go polecam.Ta strona zawiera oba skrypty FB pokazane w mojej odpowiedzi i jest zbędna (szczególnie gdy widzę, że pierwszy skrypt nie działa). Jeśli chodzi o 'http: // www.thegreekmerchant.com /', powinieneś zmienić pierwszą część kodu z mojej odpowiedzi na drugą część kodu. – AndersTornkvist

7

Na stronie roboczego masz ten znaczników:

<div id="fbconnect_button-wrapper" class="form-item"> 
    <fb:login-button v="2" background="dark" onlogin="facebook_onlogin_ready();" size="small"> 
    <a class="fb_button fb_button_small"> 
     <span class="fb_button_text">Facebook Connect</span> 
    </a> 
    </fb:login-button> 
    <div class="description">Sign in using Facebook</div> 
</div> 

Zważywszy na jałowy masz to:

<div id="fbconnect_button-wrapper" class="form-item"> 
    <fb:login-button v="2" background="dark" onlogin="facebook_onlogin_ready();" size="small"> 
    Facebook Connect 
    </fb:login-button> 
    <div class="description">Sign in using Facebook</div> 
</div> 

Przypuszczam, że JavaScript tworzenia znaczników nie działać prawidłowo. Może masz inny błąd JavaScript przed wykonaniem skryptu przycisku FB. Użyj Firebug lub podobnego narzędzia, aby to znaleźć.

Bez dodatkowych informacji trudno jest pomóc.

2

przyciski są zarówno dla mnie nie działa w Chrome, Firefox, podczas gdy na pierwszym ogniwem pracuje, a nie drugi ...

rzeczą jest to, że na stronie głównej na Firefox wysyła obciążenie procesora 100 % i widzę, że masz dużo javascripts w domu. Chciałbym spróbować wyłączyć inne javascripts i ostatecznie uruchomić sprawdzanie źródła strony, aby sprawdzić, czy nie ma żadnych uszkodzonych treści.

2

błąd znajduje się w:

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

Linia:

e.src = document.location.protocol + '//connect.facebook.net//all.js'; 

powinno być coś jak

e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 

Jeśli oglądasz plik all.js że pobrań przeglądarki zobaczysz błąd.

Zatem FB skrypty nie są ładowane, a więc wewnątrz swojej window.fbAsyncInit = function() nigdy nazywa ..

+0

, ale jak to działa na jednej stronie? – coderama

+0

@RD Dzieje się tak dlatego, że istnieją dwa skrypty na stronie roboczej, zobacz moją odpowiedź. – AndersTornkvist

+0

Ponadto, nie mogę znaleźć tego kodu, do którego odnosisz się w dowolnym miejscu? – coderama