2011-09-01 50 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

提供的鏈接斷開。 –