gpt4 book ai didi

javascript - 为什么 "Facebook Comments"iFrame 在使用 CSS 'display: none' 加载到容器中时具有不同的高度?

转载 作者:太空狗 更新时间:2023-10-29 15:17:58 24 4
gpt4 key购买 nike

我正在编写一个加载页面的 Web 应用程序,然后使用 JavaScript 使用 Facebook 的 XFBML 代码显示 Facebook 评论框。我在一个容器中有 Facebook Comments iframe,它在页面加载时设置为“显示:无”。稍后当用户单击按钮时,将显示容器。

我遇到的问题是,当页面加载时 Facebook Comments 容器设置为“显示:无”,Facebook 加载的 iframe 的高度比预期的高得多。但是,如果我加载页面时将 Facebook Comments 容器设置为“显示: block ”,然后在页面加载后将其设置为“显示:无”,则 iframe 会获得正确的高度属性。我很好奇是什么原因导致 iframe 的高度设置出现这种差异。

我的解决方法是加载容器样式设置为“display: block;”的页​​面。高度:1px;宽度:1px; border: none' 然后在页面加载后使用 javascript 将容器设置为 'display: none'。我只是想知道是什么导致了这种情况,以及是否有比我正在做的更好的解决方法。

谁能解释一下这种现象并告诉我建议的解决方案是什么?

供您引用,下面是我的标记的简化版本,没有适当的解决方法。如果您在浏览器中加载它并单击“显示评论”按钮,您将看到一个大的灰色区域,它是 Facebook 评论容器,比实际的评论框大得多。

<!DOCTYPE html>
<html>
<head>
<title>Facebook Commments Page</title>
<style type="text/css">
.initial-content { width: 100%; overflow: hidden; }
.show-comments-button { float: left; background: #aaa; padding: 6px;}
#facebook-comments { display: none; background: #eeeeee; }
</style>
<script>
function showComments(e){
var commentContainer = document.getElementById('facebook-comments');
commentContainer.style['display'] = 'block';
}
</script>
</head>
<body>
<div class="initial-content">
<h1>My little web app</h1>
<p>Here is the content a user sees when first loading the page.</p>
<div class="show-comments-button" onclick="showComments(event);">Show Comments</div>
</div>
<div id="facebook-comments">
<h1>Facebook Comments</h1>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script><fb:comments href="example.com" num_posts="2" width="500"></fb:comments>
</div>
</body>
</html>

最佳答案

我不能确定,但​​也许 display: none;通过忽略 height: 的功能属性——即使你可能已经设置了高度,display: none;覆盖它(就像 display: inline; 对于某些覆盖高度)。

我建议使用 CSS display: none; ,作为没有 JS 的用户的后备,

#facebook-comments { display: none; }

然后覆盖到 display: block;用JS

<script>
var commentContainer = document.getElementById('facebook-comments');
commentContainer.style['display'] = 'block';

function showComments(e){
...
}
</script>

在加载您的 Facebook 评论之前。加载 iframe 后,就在 </body> 之前, 再次隐藏 div:

<script>
var commentContainer = document.getElementById('facebook-comments');
commentContainer.style['display'] = 'none';
</script>

也许不是最简单的方法,但它应该可行。

干杯!

关于javascript - 为什么 "Facebook Comments"iFrame 在使用 CSS 'display: none' 加载到容器中时具有不同的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com