Подтвердить что ты не робот

Показывать spinner при загрузке iframe в facebox

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

Сначала я хотел просто загрузить это в 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? Или есть лучший подход?

Edit

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

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

Но я не уверен, как это сделать с модемом iframe.

4b9b3361

Ответ 1

попробуйте этот трюк 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%;
}

Ответ 2

Ну, вы можете, возможно, показать spinner, а затем постоянно проверять, закончил ли iframe загрузку, или использовать обработчик события iframe onload.

Не совсем уверен, как он будет работать с перенаправлением, но вы можете попробовать что-то вроде который.