2011-01-19 15 views
7

Estoy trabajando en una aplicación de página de lienzo de Facebook utilizando un iframe. Estoy usando fb.ui() para crear un cuadro de diálogo para compartir; sin embargo, cuando se abre el cuadro de diálogo, se centra al principio, y una vez que la llamada asíncrona carga el diálogo, mueve el cuadro de diálogo a la parte superior del marco flotante y desplaza el navegador a la cima.Cómo evitar que fb.ui() se desplace por el navegador

Consideré usar jQuery para reposicionar la caja, sin embargo, también tendría que desplazar la posición del navegador que me gritaba. Cualquier sugerencia sería muy apreciada.

+3

Esto ha sido reportado como un [bug en el SDK de Facebook] (https://developers.facebook.com/bugs/359862544085722/). No soy optimista, pero tal vez si todos dicen que pueden reproducirlo, lo arreglarán. –

Respuesta

0

Estoy usando jquery para obtener la posición de desplazamiento y luego configurarla en la función de respuesta.

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

esto funcionará, pero crea un efecto de parpadeo que no es bueno en absoluto :) – nXqd

+0

Esto podría funcionar para capturar su intento de desplazarse y revertirlo: $ (ventana) .one ('scroll.fbshare', función () { $ (ventana) .scrollTop (scroll); }); – Dtipson

1

Tenía el mismo problema, el posicionamiento en iFrames apesta. La forma más fácil de mantener el diálogo en la posición correcta es usar la opción de visualización emergente que muestra una nueva ventana del navegador sobre el centro de la página actual. No es tan bonito, pero funciona muy bien.

//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 funciona ... pero las personas con bloqueadores de ventanas emergentes no podrían ver esto. :( – xiaolin

+0

@eNetik, de alguna manera estas ventanas emergentes no están bloqueadas, al menos no en FF o Chrome – byron

-1

Mejorar la idea Nate ...

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

Probablemente deberías explicar cómo/por qué esto está mejorando en la respuesta de Nate. En general, es mejor si hay alguna explicación junto con tu código en respuestas – Jack

0

Para cualquier otra persona que viene a través de este tema, sólo para reiterar comentario Jonathan Tran 's por encima de unos this reported bug, se ha fijado por Facebook, pero solo para el diálogo SHARE. Si todavía está abordando este problema, probablemente esté llamando al cuadro de diálogo FEED desde su Javascript, que Facebook no se ha tomado la molestia de arreglar todavía. Utilice:

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

NO esto:

FB.ui({ 
     method: 'feed', 
     ... 
Cuestiones relacionadas