在内容更新后更改iframe高度
Change iframe height after content update
我的页面上有一些选项卡,在该页面的一个选项卡中,我有一个iframe (#quiz_iframe)
。这个iframe是问答框架,它包含在div (.quiz-div)
中。点击按钮(.start-quiz)
后,测试被加载,新的div (.quiz-content)
出现在(.quiz-div)
中。在测试内容中,我有20个另外的div (.quiz-question)
,它们是分页的,所以在单击next、prev按钮后,您可以隐藏或显示5个next/prevdiv。
重点是,在点击.start-quiz
之后,我想根据该内容调整iframe的高度,但我不知道如何调整。
现在我有一个代码,当第一次加载iframe时(它根据旧内容调整高度)
function iframeLoaded() {
var iFrameID = document.getElementById('quiz_iframe');
if(iFrameID) {
iFrameID.height = "";
iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + "px";
}
}
<iframe onload="iframeLoaded()" id="quiz_iframe" src="'.$link.'" style="width:100%;"></iframe>'
如何修改该代码,在每次.quizdiv高度更改时更新iframe高度?是的,iframe在同一个域中:)
谢谢!
您可以使用基于postMessage
的解决方案您必须在iframe和父页面中包含一些JavaScript。
在您的iframe:中
window.addEventListener("load", function() {
parent.postMessage(getDocumentHeight(), "*");
});
在您的父页面中:
function receiveIframeHeight(frameWindow, height) {
$("iframe").each(function () {
if (this.contentWindow === frameWindow) this.height = height;
});
};
window.addEventListener("message", function (e) {
receiveIframeHeight(e.source, e.data);
});
现在,您可以收听调整大小事件,并将消息从iframe发布到父页面。但要注意无限循环。
要查看完整的代码,您应该使用postmessage 查看Github repo iframe autoheight
在jQuery中,您可以使用
$("myContainer .quiz_div").on("resize", function () {
$("#quiz_idrame").attr("height", your height calc goes here);
});
"on"是一个委托的事件绑定,因此,如果您将类为.quiz_div的项添加/删除到"myContainer"中,即任何包含div的项,它都应该绑定。
相关文章:
- 动态增加 iframe 高度
- iframe高度100%不起作用
- 动态iframe高度-似乎需要重新加载页面
- 如何更改其内容的 Iframe 高度(两者都来自同一域)
- 同位素布局中的动态iframe高度
- 跨域中的动态 iframe 高度
- 调整外部域中的 iframe 高度
- 根据内容高度调整 iframe 高度的大小
- jQuery-在Iframe内按钮的onclick事件中更改Iframe高度
- jQuery/CSS-单击IFRAME内容内的按钮时更改IFRAME高度
- 如何在单击Iframe内部的按钮时更改Iframe高度'的内容
- JQuery根据iframe源设置iframe高度
- 如何在浏览器调整大小时调整iframe高度
- 如何更改IFRAME高度时源它's在另一个域上
- 基于内容使用Javascript设置iframe高度
- iframe高度在页面内容较长后不会缩小
- 为什么可以't从iframe内部的jquery更改iframe高度
- 根据内部内容使iframe高度动态化 - JQUERY/Javascript
- 如何根据元素高度动态调整iframe高度
- 动态调整动态更改内容高度的iFrame高度(内部说明)