传递给iframe的窗口调整大小值是调整大小之前的值

时间:2019-04-16 06:27:04

标签: javascript jquery html css iframe

由于我们的微型网站是如何设置的,所以我有一个父页面,该页面通过iframe显示子页面。父页面是美化的页眉和页脚母版页面,子页面具有实际内容(这是我无法控制的)。不幸的是,子页面的高度不是静态的。这是一个带有一些出现和消失的元素的计算器。我尝试通过编写以下代码来使父页面的iframe尽可能自适应:

<!-- iFrame Resizer -->
<script>
    function resizeIframe(obj) {
      	obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
    }
 
 	$(window).resize(function(){
  		var obj = document.getElementById("ifmContent");
  
  		resizeIframe(obj);
 	});
</script>
<!-- /iFrame Resizer -->
<div style="overflow: auto"> 
    <iframe src="index-iframe.html" frameborder="0" scrolling="no" onload="resizeIframe(this)" id="ifmContent"></iframe>
</div>

但是由于子页面具有自适应性和响应性,因此我将以下代码放置在子页面中:

var y = $("#divResults").innerHeight() + 200 + "px";                        
$(parent.document).find('#ifmContent').css("height",y);

一旦按下“计算”按钮并显示结果,就会触发此代码。

一切正常。但是,我遇到的问题是调整浏览器大小时。调整大小功能确实会触发,但是由于某些原因,我从子页面获得的高度值是调整大小之前的值。

例如,我在两个页面上都添加了警报,以便查看要获取的高度值。

对于父母,我有这个:

<!-- iFrame Resizer -->
<script>
    function resizeIframe(obj) {
        alert(obj.contentWindow.document.body.scrollHeight);
        obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
    }

    $(window).resize(function(){
        var obj = document.getElementById("ifmContent");

        resizeIframe(obj);
    });
</script>
<!-- /iFrame Resizer -->

在子页面上,我添加了此内容:

$(window).resize(function(){
    var x = $(document).height();
    alert(x);
});

因此,在加载时以及当我执行常规功能时,一切正常。但是,当我最小化窗口时,可以在调整大小之前获得文档高度的值:

enter image description here

然后,由于iframe的尺寸过小,内容就被切断了:

enter image description here

然后,当我最大化它时,我得到了最小化浏览器时的高度:

enter image description here

浏览器调整大小后,我是否可以获取高度值?

0 个答案:

没有答案