Показывать спиннер при загрузке ифрейма в facebox

Я использую jQuery facebox, чтобы открыть новое окно для аутентификации пользователей Facebook с помощью Devise/Omniauth в моем рельсовом приложении.

Сначала я хотел просто загрузить это в div like so:

$('#facebook-auth').live 'click', ->       
  $.facebox '
' $('#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? Или есть лучший подход?

Edit

Благодаря предложению Джареда я смог сделать это, используя iFrame mod из here. Смотрите этот jsFiddle. Однако я хотел бы показать загрузочный спиннер во время загрузки содержимого iframe. Возможно ли это? Согласно документации, обычно это делается так:

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

Но я не знаю, как это сделать с помощью iframe mod.

13
задан CodeWombat 8 September 2011 в 01:02
поделиться