2011-05-12 18 views

Trả lời

10

Thực tế, vấn đề là các trang sử dụng các tập lệnh khác nhau để tải mô-đun FBConnect.

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

On http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo có hai kịch bản, là trước và một sau:

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

tôi đã thay thế kịch bản đầu tiên với một giây và http://www.thegreekmerchant.com/ nay công trình (tất nhiên không phải là phiên bản sắc nét, nhưng trên máy chủ sandbox của tôi). Bạn chỉ cần tập lệnh thứ hai trên http://www.thegreekmerchant.com/product/fokofpolisiekar/band-logo.

+0

Bạn không có nghĩa là để thêm nó vào trang khác, như trang đó đã hoạt động ... – coderama

+0

@RD Trong thực tế, bạn không cần phải thay đổi 'http: // www.thegreekmerchant.com/product/fokofpolisiekar/band-logo', nhưng, tuy nhiên, tôi khuyên bạn nên thay đổi nó.Trang này có cả hai tập lệnh FB được hiển thị trong câu trả lời của tôi và nó là thừa (đặc biệt khi thấy tập lệnh đầu tiên không hoạt động). Khi nói đến 'http: // www.thegreekmerchant.com /', bạn nên thay đổi phần mã đầu tiên từ câu trả lời của tôi thành phần mã thứ hai. – AndersTornkvist

7

Trên trang làm việc bạn có dấu sau:

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

Trong khi trên nonworking bạn có điều này:

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

Tôi đoán, rằng JavaScript tạo đánh dấu không chạy đúng cách. Có thể bạn có một lỗi JavaScript khác trước khi thực thi tập lệnh nút FB. Sử dụng Firebug hoặc một công cụ tương tự để tìm ra điều đó.

Không có thêm thông tin, thật khó để giúp đỡ.

2

các nút đều không làm việc cho tôi trong chrome, trong khi trên firefox mắt xích đầu tiên được làm việc và lần thứ hai không ...

điều được rằng trang chủ trên firefox được gửi load cpu 100 %, và tôi thấy bạn có rất nhiều javascripts trên trang chủ. Tôi sẽ thử vô hiệu hoá các javascripts khác và cuối cùng chạy một kiểm tra trên nguồn trang để xem có bất kỳ nội dung nào bị hỏng hay không.

2

Bạn lỗi là ở:

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

Dòng:

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

nên là cái gì đó như

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

Nếu bạn xem file all.js rằng việc tải trình duyệt của bạn bạn sẽ thấy một lỗi.

Do đó, kịch bản FB không được nạp, và do đó bên trong window.fbAsyncInit = function() của bạn không bao giờ được gọi là ..

+0

nhưng sau đó nó hoạt động như thế nào trên một trang? – coderama

+0

@RD Điều này là do có hai tập lệnh trên trang đang hoạt động, xem câu trả lời của tôi. – AndersTornkvist

+0

Ngoài ra, tôi không thể tìm thấy mã này bạn đang đề cập đến bất cứ nơi nào? – coderama