Я пишу веб-приложение, которое загружает страницу, а затем использует javascript для отображения окна комментариев Facebook, используя код XFBML Facebook.У меня есть iframe Комментариев Facebook в контейнере, который установлен на «display: none» при загрузке страницы.Позже, когда пользователь нажимает на кнопку, отображается контейнер.
Проблема, с которой я столкнулся, заключается в том, что при загрузке страницы с контейнером комментариев Facebook, установленным на «display: none», в фрейме, загружаемом Facebook, естьвысота намного больше, чем ожидается.Однако, если я загружаю страницу с контейнером Комментариев Facebook, установленным на «display: block», а затем устанавливаю его на «display: none» после загрузки страницы, iframe получает правильный атрибут высоты.Мне любопытно, что вызывает это несоответствие в настройке высоты iframe.
Мой обходной путь - загрузить страницу со стилем контейнера, установленным в 'display: block;высота: 1 пикс;ширина: 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>