动态调整iframe无法在chrome中工作

时间:2016-11-30 17:56:19

标签: javascript jquery iframe resize

用例是iframe底部附近的CSS样式下拉列表,除非在下拉列表展开时iframe高度增加,否则将被截断。根据下面的链接,我将以下代码段放在每个输入的onchange事件*中调整iframe的大小。

function resizeIframe(obj){
 obj.style.height = 0;
 obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}

当展开下拉列表时,iframe的大小会增加。但是,当我们选择一个项目(也编程为触发resizeIframe)时,iframe不会缩减。在所有的事情中,代码在IE10中运行良好!

使用超时工作但会产生明显的闪烁:

// works but gives noticable flicker
function resizeIframe(obj){
 obj.style.height = 0; //setting this to 'auto' also gives flicker
 setTimeout(
  () => {obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px'},
  0
 );
}

我还应该澄清,在这个用例中预先计算最大高度是不可接受的,因为它只会导致额外的空白空间。

*我可以将JS注入iframe但不能修改iframe HTML。因此,虽然在输入更改上触发事件并不理想,但它可以完成工作,即使在使用不太理想的硬件的IE10上也可以保持高性能。

链接

0 个答案:

没有答案