2010-06-11 32 views
10

chúng tôi đã xây dựng một ứng dụng facebook với ruby ​​/ rails và facebooker (ứng dụng khung nội tuyến) và hiện đang bị mắc kẹt với FB.Canvas.setAutoResize dường như không thành công trong một số trường hợp. sử dụng ví dụ từ tài liệu dành cho nhà phát triển facebook (xem http://developers.facebook.com/docs/reference/javascript/). autoresize thất bại khi bạn nhập một trang cao hơn 800px - để nói, nó chỉ hoạt động miễn là canvas lớn hơn, chứ không phải khi nó nhỏ hơn. bất cứ ai có một đầu mối hoặc có thể là một workaround?SDK javascript facebook: FB.Canvas.setAutoResize iFrame không hoạt động?

đây là mảnh đang thay đổi kích thước

<div id="fb-root" style="width:1px;height:1px;position:absolute;"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({appId: '126342024064822', status: true, cookie: true, xfbml: true}); 
    FB.Canvas.setAutoResize(true,100); 
    }; 
    (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 rất biết ơn đối với bất kỳ ý kiến ​​hoặc gợi ý, kể từ khi tôi đang xoắn quanh đầu tôi một này trong hơn một ngày bây giờ.

Trả lời

12

Một số điều quan trọng để đảm bảo được thiết lập trong phần cài đặt ứng dụng:

  1. Canvas Cài đặt -> Render Method = iFrame
  2. Canvas Cài đặt -> iFrame Kích = Resizable
  3. Migrations -> SDK mới = Đã bật

Tiếp theo điều chỉnh mã của bạn bằng cách thêm thời gian chờ (250 có vẻ hoạt động tốt nhất, nhưng bạn có thể muốn thử nghiệm futthe r). Tôi đã thử nghiệm điều này trong FF3.6 và IE7 +. Trong IE có một đèn flash tạm thời của thanh cuộn dọc mà tôi vẫn đang cố sửa chữa.

<div id="fb-root"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({appId: '12345678910', status: true, cookie: true, xfbml: true}); 
    window.setTimeout(function() { 
    FB.Canvas.setAutoResize(); 
    }, 250); 
    }; 
    (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> 
+1

Bạn có thể sửa chữa flash cuộn với tràn: ẩn trên cơ thể. – webjunkie

+0

Tôi đã có thể ẩn đèn flash của thanh cuộn bằng tràn: ẩn trên phần thân _and_ html. – jpadvo

+0

FYI, lý do tại sao bạn cần thêm tràn: ẩn, như tôi giả sử là do phần đệm và lề, FB sử dụng JS để tính kích thước canvas của bạn, được tính toán khác nhau bởi trình duyệt, một số không bao gồm phần đệm và lề trong tính toán. – happyhardik

7

giải pháp thật dễ dàng! ngoài việc đặt FB.Canvas.setAutoResize()
bạn phải thay đổi thân máy thành kiểu body = "overflow: hidden"

nó hoạt động cho tôi! bây giờ ie8 là ok !!

2

Tôi cũng muốn chỉ ra, rằng bạn làm thực sự cần bạn

<div id="fb-root"> 

để làm việc này.

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