动态 Iframe 调整大小和 Window 焦点滚动错误
Dynamic Iframe Resize and Window Focus Scroll Bug
所以我一直在四处寻找适合我的解决方案,我几乎找到了,但我 运行 遇到了一个小故障。由于我的产品的限制,我需要在 iframe 中加载某些页面。我无法安装任何额外的库。
我的子页面有 div,点击时会隐藏和取消隐藏,因此内容会改变大小。这段代码几乎可以工作,高度扩大了,但不会再次收缩。
<script>
function checkFocus() {
if(document.activeElement == document.getElementsByTagName("iframe")[1]) {
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
}
}
window.setInterval(checkFocus, 1000);
</script>
<iframe id="test" src="/SitePages/test3.aspx" onload='javascript:(function(o){o.style.height=o.contentWindow.document.body.scrollHeight+"px";}(this));' style="height:50px;width:100%;border:none;overflow:hidden;"></iframe>
如果我加入:
test.style.height = "0px";
之前:
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
然后子页面再次收缩,除了我在主页上遇到一个奇怪的滚动错误,它不断迫使页面向上滚动。有什么解决办法吗?
感谢阅读!
我想通了。添加
window.focus();
之后
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
已解决问题。这只是将焦点从 iframe 上移开,并将其放回主 window 中,因为它正在循环。
所以我一直在四处寻找适合我的解决方案,我几乎找到了,但我 运行 遇到了一个小故障。由于我的产品的限制,我需要在 iframe 中加载某些页面。我无法安装任何额外的库。
我的子页面有 div,点击时会隐藏和取消隐藏,因此内容会改变大小。这段代码几乎可以工作,高度扩大了,但不会再次收缩。
<script>
function checkFocus() {
if(document.activeElement == document.getElementsByTagName("iframe")[1]) {
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
}
}
window.setInterval(checkFocus, 1000);
</script>
<iframe id="test" src="/SitePages/test3.aspx" onload='javascript:(function(o){o.style.height=o.contentWindow.document.body.scrollHeight+"px";}(this));' style="height:50px;width:100%;border:none;overflow:hidden;"></iframe>
如果我加入:
test.style.height = "0px";
之前:
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
然后子页面再次收缩,除了我在主页上遇到一个奇怪的滚动错误,它不断迫使页面向上滚动。有什么解决办法吗?
感谢阅读!
我想通了。添加
window.focus();
之后
test.style.height = test.contentWindow.document.documentElement.scrollHeight + 'px';
已解决问题。这只是将焦点从 iframe 上移开,并将其放回主 window 中,因为它正在循环。