Facebook Connect图标未显示在Internet Explorer中

Joh*_*uff 5 javascript ajax internet-explorer facebook ruby-on-rails

我正在使用Facebook Connect的网站上工作,最近进行了一些更改,以便主页被缓存,如果您没有登录(使用ajax调用检查),它会加载Facebook Connect javascript并将连接按钮呈现为这页纸.除了Internet Explorer 7和8之外,这在任何地方都能很好地工作.奇怪的是我将按钮渲染为隐藏的"注册/登录"表单,当您显示其中任何一个时,会出现"连接"按钮.你可以看看这里,你会看到Firefox中的按钮,而不是Internet Explorer.如果单击"登录",将显示该按钮.

这是一个Rails应用程序所以在服务器端我们响应一个像这样的rjs的ajax调用:

  page['signin-status'].replace(:partial => "common/layout/signin_menu")

  page.select('.facebook-connect').each do |value, index|
    value.replace(render(:partial => '/facebook/signin'))
  end

  page << <<-eos
  LazyLoader.load('http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php', function(){
    FB.init('#{Facebooker.api_key}','/xd_receiver.html');
  });
eos
Run Code Online (Sandbox Code Playgroud)

第一行是替换标题,第二行是Modal对话框中的Connect按钮.渲染到标题中的部分内容如下所示:

<span id='signin-status'>
  <%= fb_login_button(remote_function(:url => "/facebook/connect"))%> |
  <%= link_to_function "Sign In", "showSignInForm();", :id => "signin" %> |
  <%= link_to_function "Sign Up", "showSignUpForm();", :id => "signup" %>
</span>
Run Code Online (Sandbox Code Playgroud)

呈现在Modal对话框中的Partial如下所示:

  <div class='facebook-connect'>
    <div id="FB_HiddenContainer"  style="position:absolute; top:-10000px; width:0px; height:0px;" ></div>
    <label>Or sign in with your Facebook account</label>
    <%= fb_login_button(remote_function(:url => "/facebook/connect"))%>
  </div> 
Run Code Online (Sandbox Code Playgroud)

我发现显示模态对话框导致显示所有图标非常奇怪.有没有人对正在发生的事情有任何想法或建议?

Joh*_*uff 1

事实证明,我FB_HiddenContainer在页面中有两个带有 id 的 div,这就是导致问题的原因。删除重复的 div 修复了所有问题。