2011-05-12 6 views
10

ऊपरी दाएं कोने में, यह इस पृष्ठ पर दिखाता है:एफबीसी कनेक्ट: यह कुछ पृष्ठों पर क्यों दिख रहा है, न कि दूसरों को?

http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo 

लेकिन इस पर नहीं

http://www.thegreekmerchant.com/ 

कोई विचार क्यों? मैं FBConnect मॉड्यूल के साथ Drupal 6 का उपयोग कर रहा हूँ।

उत्तर

10

वास्तव में, समस्या यह है कि पृष्ठ FBConnect मॉड्यूल को लोड करने के लिए अलग-अलग स्क्रिप्ट का उपयोग करते हैं।

http://www.thegreekmerchant.com/ पर:

<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> 

मैं दूसरा एक और अब 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> 

पर http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo वहाँ दो लिपियों, पिछले एक और निम्न में से एक हैं काम करता है (निश्चित रूप से तेज संस्करण नहीं, बल्कि मेरे सैंडबॉक्स सर्वर पर)। आपको केवल http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo पर दूसरी स्क्रिप्ट चाहिए।

+0

आप अन्य पेज में जोड़ने के लिए इसका मतलब यह नहीं है, तो उस पृष्ठ को पहले से ही काम करता है ... – coderama

+0

@RD के रूप में वास्तव में, आपको 'http: // www.thegreekmerchant.com/product/fokofpolisiekar/band-logo' को बदलने की आवश्यकता नहीं है, लेकिन, हालांकि, मैं दृढ़ता से इसकी अनुशंसा करता हूं।इस पृष्ठ में मेरे उत्तर में दिखाए गए दोनों एफबी स्क्रिप्ट हैं, और यह अनावश्यक है (विशेष रूप से जब पहली स्क्रिप्ट काम नहीं कर रही है)। जब यह http: // www.thegreekmerchant.com/'की बात आती है, तो आपको दूसरे कोड भाग में अपने उत्तर से पहला कोड भाग बदलना चाहिए। – AndersTornkvist

7

काम कर पृष्ठ पर आप इस मार्कअप है

<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> 

मेरा अनुमान है कि जावास्क्रिप्ट मार्कअप बनाने ठीक से नहीं चलता है। हो सकता है कि आपके पास एफबी बटन स्क्रिप्ट के निष्पादन से पहले एक और जावास्क्रिप्ट त्रुटि हो। इसे खोजने के लिए फ़ायरबग या एक समान टूल का उपयोग करें।

अधिक जानकारी के बिना मदद करना मुश्किल है।

2

बटन दोनों, क्रोम में मेरे लिए काम नहीं कर रहे हैं, जबकि फ़ायरफ़ॉक्स पर पहला लिंक काम कर रहा है और नहीं दूसरी ...

बात है कि फ़ायरफ़ॉक्स पर मुख पृष्ठ cpu लोड 100 को भेज रहा है %, और मुझे लगता है कि आपके घर पर जावास्क्रिप्ट का भार है। मैं अन्य जावास्क्रिप्ट को अक्षम करने का प्रयास करता हूं और आखिरकार पेज स्रोत पर एक चेक चलाता हूं ताकि यह देखने के लिए कि कोई टूटी हुई सामग्री है या नहीं।

2

आप गलती से हुआ है:

(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); 
    }()); 

लाइन:

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

तरह

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

कुछ होने चाहिए आप देखना all.js दायर करें कि आपके ब्राउज़र डाउनलोड आपको एक त्रुटि दिखाई देगी।

इस प्रकार अमेरिकन प्लान स्क्रिप्ट लोड किए गए हैं, और इस तरह अपने window.fbAsyncInit = function() के अंदर कभी नहीं कहा जाता है ..

+0

लेकिन फिर यह एक पृष्ठ पर कैसे काम करता है? – coderama

+0

@RD ऐसा इसलिए है क्योंकि कार्य पृष्ठ पर दो स्क्रिप्ट हैं, मेरा उत्तर देखें। – AndersTornkvist

+0

इसके अलावा, मुझे यह कोड नहीं मिल रहा है जिसका आप कहीं भी संदर्भ दे रहे हैं? – coderama

संबंधित मुद्दे