在面板中加载iframe时显示微调器

时间:2011-09-01 01:02:43

标签: javascript jquery ruby-on-rails-3 facebook facebox

我正在使用jQuery facebox打开一个新窗口,在我的rails应用中使用Devise/Omniauth验证Facebook用户。

起初我想简单地在div中加载它:

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

但问题是这不起作用,因为有多个重定向。第一个链接打开/auth/facebook,重定向到graph.facebook.com,重定向回我的回调网址,最终重定向到确认页面。我需要向用户显示确认页面。我现在使用它的方法是打开一个这样的外部窗口:

$('#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 mod来完成此操作。见this jsFiddle。但是我想在iframe内容加载时显示加载微调器。这可能吗?根据文档,正常的方法是这样的:

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

但我不确定如何使用iframe mod。

2 个答案:

答案 0 :(得分: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%;
}

答案 1 :(得分:0)

好吧,你可以展示一个微调器,然后不断检查iframe是否完成加载,或者使用iframe的onload事件处理程序。

不完全确定如何使用重定向,但您可以像that一样尝试smth。