在 iframe 内单击按钮时,如何增加 iframe 的高度?

Posted

技术标签:

【中文标题】在 iframe 内单击按钮时,如何增加 iframe 的高度?【英文标题】:How can i increase height of iframe when a button is clicked inside the iframe? 【发布时间】:2017-10-07 13:34:37 【问题描述】:

所以,我一直在开发一个 wordpress 网站,该网站在网站的网页中有一个 iframe。iframe 包含 2 个按钮,它们使用 jquery append 将内容包含在 iframe 中。目前我包含一个 javascript 函数来更改高度每次加载 iframe 时。但我想在按下 iframe 内的按钮时更改高度。 iframe 在 wordpress 的插件文件中定义,iframe src 在 wordpress 主题文件夹中定义为模板。 包含 iframe 标签的插件文件,

<iframe src="http://localhost/mysite/firstrate/" frameborder="0" 
scrolling="no" onload="resizeIframe();" id="starwindow" ></iframe>
<script>
var obj=document.getElementById("starwindow");
function resizeIframe() 
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';

</script>   

包含 iframe src(模板文件)的主题文件,

<button class="add_form_field" ><span>ADD</span></button>
<button id="button" class="submit_button"> SUBMIT </button>
<input type="radio" class="rating1" id="1star5" name="rating1" value="5" />
<label for="1star5" title="Five Stars">5 stars</label>
<input type="radio" class="rating1" id="1star4" name="rating1" value="4" />
<label for="1star4" title="Four Stars">4 stars</label>
<input type="radio" class="rating1" id="1star3" name="rating1" value="3" />
<label for="1star3" title="Three Stars">3 stars</label>
<input type="radio" class="rating1" id="1star2" name="rating1" value="2" />
<label for="1star2" title="Two Stars">2 stars</label>
<input type="radio" class="rating1" id="1star1" name="rating1" value="1" />
<label for="1star1" title="One Star">1 star</label>

This is the screenshot.

我希望 iframe 在 iframe 内按下按钮时增加高度,因此按下按钮时不会出现滚动条。 提前谢谢你。

【问题讨论】:

【参考方案1】:

你可以用 jQuery 做到这一点:

$('#starwindow').load(function()

        var iframe = $('#starwindow').contents();

        iframe.find("#button").click(function()
               resizeIframe();
        );
);

'#button' 更改为要用于 iframe 调整大小的元素。

编辑:

$('#starwindow').load(function()
    var iframe = $('#starwindow').contents();
    iframe.find("#add").click(function()
        resizeIframe('add');
    );
    iframe.find("#delete").click(function()
        resizeIframe('delete');
    );
);

并更改您的功能以添加/删除高度

resizeIframe(mode) 
    if(mode=='add') 
        //code to add height
    
    else 
        //code to delete height
    

【讨论】:

我还遇到了一些其他问题。当我按下添加按钮时,会创建另一个名为“删除”的按钮。如何在此代码中也包含该按钮,从而降低 iframe 高度。跨度> 我想,我没有把问题说清楚。iframe 中的内容在第一次调用 Add 按钮后发生变化。创建了一个新按钮 Delete。(我现在已经包含问题中的截图)。因此, iframe.find("#delete").click(function()) 将不起作用,因为删除按钮不在 var iframe = $('#starwindow').contents( ).Add按钮被调用后如何包含Delete按钮? @codewiz 我明白了,那么你必须运行 var iframe = $('#starwindow').contents();再次包括删除按钮 好的。感谢您的帮助。

以上是关于在 iframe 内单击按钮时,如何增加 iframe 的高度?的主要内容,如果未能解决你的问题,请参考以下文章

在 iframe 内触发按钮单击 [重复]

如何在 HTML 中单击按钮时更改 iframe 源?

如何在按钮单击事件中的模式弹出扩展器中的iframe中加载页面?

为啥前端尽量少用iframe

单击按钮时 iFrame 将不可见

单击 iframe 按钮关闭父窗口