Так что я боролся с этим уже несколько часов, и все соответствующие результаты, которые я нашел, показали, что мой код верен, но, очевидно, это не так, поскольку он не работает.
В конечном счете, то, что яя пытаюсь сделать, это jsut изменить размер IFrame, чтобы соответствовать его содержимому (с минимумом 100px).Примечание. Iframe35382-content будет сгенерирован через бэкэнд, поэтому этот подход к заполнению IFrame.
Код правильно заполняет IFrame нужными мне данными и изменяет их размер, но по какой-то причине я явно пропускаювысота содержимого всегда возвращается как 150px (я так понимаю, это высота IFrame по умолчанию), а html, возвращаемый content (). find ('html') - используется для выгрузки содержимого IFrame - для которого я выплюнулцели отладки всегда не определены.
Любая помощь или направление приветствуются, возможно, просто нужен второй набор глаз, чтобы обнаружить что-то глупое ¯_ (ツ) _ / ¯
Соответствующий код ниже:
<iframe id="Iframe35382" width="100%" frameborder="0"></iframe>
<script id="Iframe35382-content" type="text/plain">
<html>
<head>
<p>Lengthy html(correctly displaying) shortened for porposes of question</p>
</body>
</html>
</script>
<script type="text/javascript">
function CheckIFrameHeight($frame)
{
var newHeight = $frame.contents().height();
alert(newHeight); // DEBUG
alert($frame.contents().find('html').html()); // DEBUG
if(!newHeight || isNaN(newHeight))
newHeight = 100;
$frame.height(newHeight + 'px');
}
var iframe = document.getElementById('Iframe35382');
iframe.src = 'data:text/html,' + encodeURIComponent($('#Iframe35382-content').text());
CheckIFrameHeight($('#Iframe35382'));
</script>