2011-11-11 54 views
58

Tại sao chúng tôi cần phải thêm các cặp thẻ này trong ứng dụng facebook của chúng tôi. Việc sử dụng các cặp thẻ này là gì. Tôi đã tạo một ứng dụng sử dụng yêu cầu ứng dụng và nó hoạt động tốt ngay cả khi tôi không thêm các thẻ này trước tập lệnh của mình. Vì vậy, tôi thực sự tự hỏi tại sao chúng ta cần phải thêm chúng. Cảm ơn bạn.Tại sao chúng tôi cần thêm <div id="fb-root"></div>

Trả lời

45

Đó là trình giữ chỗ cho tập lệnh javascript Facebook để đính kèm các phần tử vào DOM. Không có điều này khi kịch bản Facebook được tham chiếu được chạy, nó không có nơi nào để đính kèm các phần tử.

Bạn có thể thấy fb-root được nối vào như một phần của quá trình khởi tạo.

<script type="text/javascript"> 
     window.fbAsyncInit = function() { 
     FB.init({appId: 'xxxxxx', status: true, cookie: true, 
       xfbml: true}); 
     }; 

     (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> 
+2

Đây là ví dụ về cách sử dụng javascript không phô trương. – Teddy

+0

hi mọi người chú ý rằng

sẽ khiến https: // của bạn không an toàn? Khi tôi trực tiếp trỏ trình duyệt đến https: //.../myfb_app/, tệp không phân tích cú pháp là an toàn nếu tôi có
nhưng khi tôi xóa nó, toàn bộ tệp sẽ phân tích cú pháp là an toàn. Bất kỳ đề xuất?? – alex

+5

Họ không thể trực tiếp nối thêm vào đầu? –

31

CẬP NHẬT: Facebook không còn yêu cầu bạn bao gồm <div id="fb-root"></div> trong HTML của bạn.

Bây giờ bạn có thể xóa nó. Facebook Javascript SDK tự tạo nó, gắn nó vào thẻ BODY. Không có cảnh báo nào được hiển thị trong bảng điều khiển, như trước đây.

Tài liệu trên Facebook cũng đã được cập nhật, không còn hiển thị yêu cầu <div id="fb-root"></div> nữa.

Cũ tài liệu cho phiên bản 1.0 (cho thấy <div id="fb-root"></div>): https://developers.facebook.com/docs/javascript/quickstart/v1.0

tài liệu hiện tại cho phiên bản 2.5 (không còn thấy <div id="fb-root"></div>): https://developers.facebook.com/docs/javascript/quickstart/v2.5

+0

Ngoại trừ sau đó chúng tôi dường như có các vấn đề như [this] (http://stackoverflow.com/questions/24019877/fb-init-function-gives-wrong-version-error) – mgalgs

+0

@mgalgs: Đọc những nhận xét đó, nó không xuất hiện mà bất cứ ai tìm thấy một sửa chữa cho bất cứ điều gì đã gây ra vấn đề của OP.Vì vậy, tôi sẽ không nói thêm thẻ div là một sửa chữa cho bất cứ điều gì.Nếu có một vấn đề, nó được 2 năm và tôi chắc chắn nó được giải quyết bởi Facebook, tùy chọn tốt nhất là làm theo các khuyến nghị mã của chúng, không bao gồm thẻ div đó. –

+0

v2.8 hiển thị cảnh báo ... –

-1

Nó được thậm chí đơn giản hơn với Turbolinks 5. Bạn chỉ cần thêm data-turbolinks-permanent=true vào số fb-root div và số này sẽ được duy trì giữa các yêu cầu. Không cần phải fiddle với javascript.

Các vấn đề liên quan