2011-01-19 56 views
7

Tôi đang làm việc trên một ứng dụng trang vải nền Facebook bằng cách sử dụng khung nội tuyến. Tôi đang sử dụng fb.ui() để tạo hộp thoại để chia sẻ tuy nhiên khi hộp thoại mở ra, nó được căn giữa lúc đầu, sau đó khi cuộc gọi async tải hộp thoại, hộp thoại sẽ di chuyển hộp thoại lên đầu iframe và cuộn trình duyệt lên đầu.Ngăn chặn fb.ui() di chuyển trình duyệt

Tôi đã xem xét việc sử dụng jQuery để đặt lại vị trí hộp tuy nhiên tôi cũng phải cuộn vị trí trình duyệt đang hét lên với tôi. Bất kỳ đề xuất sẽ được đánh giá rất cao.

+3

này đã được báo cáo là [lỗi trong SDK của Facebook] (https://developers.facebook.com/bugs/359862544085722/). Tôi không lạc quan, nhưng có lẽ nếu mọi người nói rằng họ có thể tái tạo nó, họ sẽ sửa chữa nó. –

Trả lời

0

Tôi đang sử dụng jquery để có được vị trí cuộn và sau đó đặt nó vào chức năng phản hồi.

scroll = $(window).scrollTop(); 
FB.ui(
{ 
//setup 
}, 
function(response) 
{ 
//handle response 
$(window).scrollTop(scroll); 
}); 
+0

điều này sẽ làm việc nhưng nó tạo ra một hiệu ứng nhấp nháy mà không phải là tốt cả :) – nXqd

+0

Điều này có thể hoạt động để nắm bắt nỗ lực của họ để cuộn và hoàn nguyên nó: $ (cửa sổ) .one ('scroll.fbshare', function () { $ (cửa sổ) .scrollTop (cuộn); }); – Dtipson

1

Có cùng vấn đề, vị trí trong iFrames hút. Cách dễ nhất để giữ cho hộp thoại được định vị chính xác là sử dụng tùy chọn hiển thị bật lên bật cửa sổ trình duyệt mới phía trên giữa trang hiện tại. Nó không đẹp, nhưng nó hoạt động độc đáo.

//generic sharing function 
var fbshare = function(url, display) { 
    var share = { 
     method: 'stream.share', 
     u: url, 
     display: display 
    }; 
    FB.ui(share); 
}; 

//share using popup 
<a href="#fbshare" onClick="fbshare('http://www.theurl.com','popup');">Share</a> 
+0

Popup không hoạt động .. nhưng những người có trình chặn cửa sổ bật lên sẽ không thể thấy điều này. :( – xiaolin

+0

@eNetik, bằng cách nào đó các cửa sổ bật lên này không bị chặn, ít nhất không có trong FF hoặc Chrome – byron

-1

Nâng cao ý tưởng Nate ...

window['__sy'] = $(window).scrollTop(); 
    FB.ui(
    { 
    //setup 
    }, 
    function(response) 
    { 
    //handle response 
    }); 
    $(window).one('scroll',function(){$(window).scrollTop(window['__sy'])}); 
+0

Có thể bạn nên giải thích cách thức/tại sao điều này cải thiện trên câu trả lời của Nate Nói chung, tốt nhất là nếu có giải thích cùng với mã của bạn câu trả lời. – Jack

0

Đối với bất kỳ ai khác đang đến qua vấn đề này, chỉ để nhắc lại lời nhận xét Jonathan Tran 's trên khoảng this reported bug, nó đã được cố định bởi Facebook, nhưng chỉ dành cho hộp thoại SHARE. Nếu bạn vẫn đang gặp vấn đề này, có thể bạn đang gọi hộp thoại FEED từ Javascript của bạn thay vào đó, mà Facebook vẫn chưa bận tâm để sửa chữa. Sử dụng điều này:

FB.ui({ 
     method: 'share', 
     ... 

KHÔNG này:

FB.ui({ 
     method: 'feed', 
     ... 
Các vấn đề liên quan