2011-09-01 119 views
13

我使用jQuery facebox打开一个新的窗口,在我的Rails应用程序验证Facebook用户与Devise/Omniauth加载一个iframe。显示微调而在facebox

起初我想在一个div来简单地加载这个像这样:

$('#facebook-auth').live 'click', ->  
    $.facebox '<div id="foo"></div>' 
    $('#foo').load $(this).attr 'href' 
    false 

但问题是,这是行不通的,因为有多个重定向。第一个链接打开/auth/facebook,其重定向到graph.facebook.com,其重定向回我的回调URL,并最终重定向到一个确认页面。我需要向用户显示确认页面。我的方式是正确的,现在的工作是通过打开这样的一个对外窗口:

$('#facebook-auth').live 'click', -> 
    width = 600 
    height = 400 
    left = (screen.width/2) - (width/2) 
    top = (screen.height/2) - (height/2) 
    window.open $(this).attr('href'), 'authPopup', "menubar=no,toolbar=no,status=no,width=#{width},height=#{height},toolbar=no,left=#{left},top=#{top}" 
    false 

有我的方式来打开一个新窗口,并在facebox加载其内容是什么?还是有更好的方法?

编辑

感谢Jared的建议,我能够从here做到这一点使用一个iFrame国防部。见this jsFiddle。不过,我想在加载iframe内容时显示加载微调器。这可能吗?根据文档,通常这样做的方式是这样的:

$(".badge").live "click", -> 
    $.facebox -> 
    $.get "page.html", (data) -> 
     $.facebox data 
    false 

但我不知道如何使用iframe mod来做到这一点。

+4

你可以使用在Facebox我相信一个IFRAME。 –

+0

感谢帮助。 – CodeWombat

+0

你是否控制确认页面? – invertedSpear

回答

35

试试这招的CSS ..这是你正在尝试做什么?

http://jsfiddle.net/7CBjn/3/

iframe { 
    background-image: url("http://jimpunk.net/Loading/wp-content/uploads/loading2.gif"); 
    background-repeat: no-repeat; 
    background-position: 50% 50%; 
} 
+0

这是相当聪明的,我觉得这可能只是做的伎俩。 – CodeWombat

+1

请注意,加载gif不再工作......所以任何尝试此操作的人,只需在测试时链接到新图像即可。 – HappyCoder

0

好吧,你也许可以显示微调,然后不断地检查,如果一个iframe装载完毕,或使用iframe的onload事件处理程序。

不完全确定它如何与重定向一起工作,但您可以尝试像that那样的不合适。

+0

提供的链接断开。 –