我需要一个解决方案来自动调整andwidth
以height
勉强iframe
适应它的内容。iframe
关键是加载后可以更改宽度和高度。我想我需要一个事件操作来处理 iframe 中包含的主体尺寸的变化。
33 回答
<script type="application/javascript">
function resizeIFrameToFitContent( iFrame ) {
iFrame.width = iFrame.contentWindow.document.body.scrollWidth;
iFrame.height = iFrame.contentWindow.document.body.scrollHeight;
}
window.addEventListener('DOMContentLoaded', function(e) {
var iFrame = document.getElementById( 'iFrame1' );
resizeIFrameToFitContent( iFrame );
// or, to resize all iframes:
var iframes = document.querySelectorAll("iframe");
for( var i = 0; i < iframes.length; i++) {
resizeIFrameToFitContent( iframes[i] );
}
} );
</script>
<iframe src="usagelogs/default.aspx" id="iFrame1"></iframe>
嵌入的单线解决方案:从最小尺寸开始并增加内容尺寸。不需要脚本标签。
<iframe src="http://URL_HERE.html" onload='javascript:(function(o){o.style.height=o.contentWindow.document.body.scrollHeight+"px";}(this));' style="height:200px;width:100%;border:none;overflow:hidden;"></iframe>
到目前为止给出的所有解决方案都只考虑一次调整大小。您提到您希望能够在修改内容后调整 iFrame 的大小。为此,您需要在 iFrame 内执行一个函数(一旦内容发生更改,您需要触发一个事件来说明内容已更改)。
我被这个问题困扰了一段时间,因为 iFrame 内的代码似乎仅限于 iFrame 内的 DOM(并且无法编辑 iFrame),并且在 iFrame 外执行的代码被 iFrame 外的 DOM 卡住(并且不能t 拾取来自 iFrame 内部的事件)。
解决方案来自发现(通过同事的帮助)可以告诉 jQuery 使用什么 DOM。在这种情况下,是父窗口的 DOM。
因此,这样的代码可以满足您的需要(在 iFrame 中运行时):
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery("#IDofControlFiringResizeEvent").click(function () {
var frame = $('#IDofiframeInMainWindow', window.parent.document);
var height = jQuery("#IDofContainerInsideiFrame").height();
frame.height(height + 15);
});
});
</script>
如果 iframe 内容来自同一个域,这应该很好用。它确实需要 jQuery。
$('#iframe_id').load(function () {
$(this).height($(this).contents().height());
$(this).width($(this).contents().width());
});
要让它动态调整大小,你可以这样做:
<script language="javaScript">
<!--
function autoResize(){
$('#themeframe').height($('#themeframe').contents().height());
}
//-->
</script>
<iframe id="themeframe" onLoad="autoResize();" marginheight="0" frameborder="0" src="URL"></iframe>
然后在 iframe 加载的页面上添加以下内容:
<script language="javaScript">
function resize()
{
window.parent.autoResize();
}
$(window).on('resize', resize);
</script>
如果您不想使用 jQuery,这是一个跨浏览器的解决方案:
/**
* Resizes the given iFrame width so it fits its content
* @param e The iframe to resize
*/
function resizeIframeWidth(e){
// Set width of iframe according to its content
if (e.Document && e.Document.body.scrollWidth) //ie5+ syntax
e.width = e.contentWindow.document.body.scrollWidth;
else if (e.contentDocument && e.contentDocument.body.scrollWidth) //ns6+ & opera syntax
e.width = e.contentDocument.body.scrollWidth + 35;
else (e.contentDocument && e.contentDocument.body.offsetWidth) //standards compliant syntax – ie8
e.width = e.contentDocument.body.offsetWidth + 35;
}
我正在使用此代码在页面上加载所有 iframe(使用 autoHeight 类)时自动调整它们的高度。经过测试,它适用于 IE、FF、Chrome、Safari 和 Opera。
function doIframe() {
var $iframes = $("iframe.autoHeight");
$iframes.each(function() {
var iframe = this;
$(iframe).load(function() {
setHeight(iframe);
});
});
}
function setHeight(e) {
e.height = e.contentWindow.document.body.scrollHeight + 35;
}
$(window).load(function() {
doIframe();
});
在我尝试了地球上的一切之后,这对我来说真的很有效。
索引.html
<style type="text/css">
html, body{
width:100%;
height:100%;
overflow:hidden;
margin:0px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function autoResize(iframe) {
$(iframe).height($(iframe).contents().find('html').height());
}
</script>
<iframe src="http://iframe.domain.com" width="100%" height="100%" marginheight="0" frameborder="0" border="0" scrolling="auto" onload="autoResize(this);"></iframe>
这是一个可靠的解决方案
function resizer(id)
{
var doc=document.getElementById(id).contentWindow.document;
var body_ = doc.body, html_ = doc.documentElement;
var height = Math.max( body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight );
var width = Math.max( body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth );
document.getElementById(id).style.height=height;
document.getElementById(id).style.width=width;
}
html
<IFRAME SRC="blah.php" id="iframe1" onLoad="resizer('iframe1');"></iframe>
我在上面稍微修改了 Garnaph 的出色解决方案。似乎他的解决方案根据事件发生前的大小修改了 iframe 大小。对于我的情况(通过 iframe 提交电子邮件),我需要在提交后立即更改 iframe 高度。例如,提交后显示验证错误或“谢谢”消息。
我刚刚消除了嵌套的 click() 函数并将其放入我的 iframe html 中:
<script type="text/javascript">
jQuery(document).ready(function () {
var frame = $('#IDofiframeInMainWindow', window.parent.document);
var height = jQuery("#IDofContainerInsideiFrame").height();
frame.height(height + 15);
});
</script>
为我工作,但不确定跨浏览器功能。
经过一些实验,我想出了另一个解决方案。我最初尝试了标记为这个问题的“最佳答案”的代码,但它没有用。我的猜测是因为我当时程序中的 iframe 是动态生成的。这是我使用的代码(它对我有用):
正在加载的 iframe 中的 Javascript:
window.onload = function()
{
parent.document.getElementById('fileUploadIframe').style.height = document.body.clientHeight+5+'px';
parent.document.getElementById('fileUploadIframe').style.width = document.body.clientWidth+18+'px';
};
必须在高度上添加 4 个或更多像素才能删除滚动条(iframe 的一些奇怪的错误/效果)。宽度更奇怪,你可以安全地将 18px 添加到 body 的宽度。还要确保您已应用 iframe 主体的 css(如下)。
html, body {
margin:0;
padding:0;
display:table;
}
iframe {
border:0;
padding:0;
margin:0;
}
这是 iframe 的 html:
<iframe id="fileUploadIframe" src="php/upload/singleUpload.html"></iframe>
这是我的 iframe 中的所有代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>File Upload</title>
<style type="text/css">
html, body {
margin:0;
padding:0;
display:table;
}
</style>
<script type="text/javascript">
window.onload = function()
{
parent.document.getElementById('fileUploadIframe').style.height = document.body.clientHeight+5+'px';
parent.document.getElementById('fileUploadIframe').style.width = document.body.clientWidth+18+'px';
};
</script>
</head>
<body>
This is a test.<br>
testing
</body>
</html>
我已经在 chrome 中进行了测试,并在 Firefox 中进行了一些测试(在 windows xp 中)。我还有更多的测试要做,所以请告诉我这对你有用。
如果您可以同时控制 IFRAME 内容和父窗口,那么您需要iFrame Resizer。
该库支持自动调整相同和跨域 iFrame 的高度和宽度,以适应其包含的内容。它提供了一系列功能来解决使用 iFrame 时最常见的问题,其中包括:
- 将 iFrame 的高度和宽度调整为内容大小。
- 适用于多个和嵌套的 iFrame。
- 跨域 iFrame 的域身份验证。
- 提供一系列页面大小计算方法来支持复杂的 CSS 布局。
- 使用 MutationObserver 检测可能导致页面调整大小的 DOM 更改。
- 检测可能导致页面调整大小的事件(窗口调整大小、CSS 动画和过渡、方向更改和鼠标事件)。
- 通过 postMessage 简化 iFrame 和主机页面之间的消息传递。
- 修复 iFrame 中的页面链接并支持 iFrame 和父页面之间的链接。
- 提供自定义大小和滚动方法。
- 向 iFrame 公开父位置和视口大小。
- 与 ViewerJS 一起使用以支持 PDF 和 ODF 文档。
- 回退支持到 IE8。
语境
我必须在网络扩展的背景下自己做这件事。这个网络扩展在每个页面中注入了一些 UI,这个 UI 存在于iframe
. 里面的内容iframe
是动态的,所以我不得不重新调整它本身的宽度和高度iframe
。
我使用React,但这个概念适用于每个库。
我的解决方案(假设您同时控制页面和 iframe)
在里面iframe
我改变了body
样式以具有非常大的尺寸。这将允许内部元素使用所有必要的空间进行布局。制作width
and height
100% 对我不起作用(我猜是因为 iframe 有一个默认值width = 300px
and height = 150px
)
/* something like this */
body {
width: 99999px;
height: 99999px;
}
然后我将所有 iframe UI 注入到一个 div 中并给它一些样式
#ui-root {
display: 'inline-block';
}
在此内部渲染我的应用程序后#ui-root
(在React中,我在内部执行此操作componentDidMount
)我计算此 div 的尺寸并将它们同步到父页面,使用window.postMessage
:
let elRect = el.getBoundingClientRect()
window.parent.postMessage({
type: 'resize-iframe',
payload: {
width: elRect.width,
height: elRect.height
}
}, '*')
在父框架中,我执行以下操作:
window.addEventListener('message', (ev) => {
if(ev.data.type && ev.data.type === 'resize-iframe') {
iframe.style.width = ev.data.payload.width + 'px'
iframe.style.height = ev.data.payload.height + 'px'
}
}, false)
使用上述方法都无法正常工作。
javascript:
function resizer(id) {
var doc = document.getElementById(id).contentWindow.document;
var body_ = doc.body, html_ = doc.documentElement;
var height = Math.max(body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight);
var width = Math.max(body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth);
document.getElementById(id).style.height = height;
document.getElementById(id).style.width = width;
}
html:
<div style="background-color:#b6ff00;min-height:768px;line-height:inherit;height:inherit;margin:0px;padding:0px;overflow:visible" id="mainDiv" >
<input id="txtHeight"/>height <input id="txtWidth"/>width
<iframe src="head.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" style="width:100%; height: 47px" frameborder="0" ></iframe>
<iframe src="left.aspx" name="leftFrame" scrolling="yes" id="Iframe1" title="leftFrame" onload="resizer('Iframe1');" style="top:0px;left:0px;right:0px;bottom:0px;width: 30%; border:none;border-spacing:0px; justify-content:space-around;" ></iframe>
<iframe src="index.aspx" name="mainFrame" id="Iframe2" title="mainFrame" scrolling="yes" marginheight="0" frameborder="0" style="width: 65%; height:100%; overflow:visible;overflow-x:visible;overflow-y:visible; " onload="resizer('Iframe2');" ></iframe>
</div>
环境:IE 10、Windows 7 x64
可以制作一个“类似幽灵”的 IFrame,就像它不存在一样。
见http://codecopy.wordpress.com/2013/02/22/ghost-iframe-crossdomain-iframe-resize/
基本上,您使用https://developer.mozilla.org/en-US/docs/DOM/window.postMessageparent.postMessage(..)
中描述
的事件系统
这适用于所有现代浏览器!
我发现这个调整器效果更好:
function resizer(id)
{
var doc = document.getElementById(id).contentWindow.document;
var body_ = doc.body;
var html_ = doc.documentElement;
var height = Math.max( body_.scrollHeight, body_.offsetHeight, html_.clientHeight, html_.scrollHeight, html_.offsetHeight );
var width = Math.max( body_.scrollWidth, body_.offsetWidth, html_.clientWidth, html_.scrollWidth, html_.offsetWidth );
document.getElementById(id).height = height;
document.getElementById(id).width = width;
}
请注意,样式对象已被删除。
万一有人来到这里:当我从 iframe 中删除 div 时,我遇到了解决方案的问题 - iframe 并没有变短。
有一个 Jquery 插件可以完成这项工作:
http://www.jqueryscript.net/layout/jQuery-Plugin-For-Auto-Resizing-iFrame-iFrame-Resizer.html
在 jQuery 中,这对我来说是最好的选择,这对我很有帮助!!我等着帮你!
框架
<iframe src="" frameborder="0" id="iframe" width="100%"></iframe>
jQuery
<script>
var valueSize = $( "#iframe" ).offset();
var totalsize = (valueSize.top * 2) + valueSize.left;
$( "#iframe" ).height(totalsize);
</script>
显然有很多场景,但是,我的文档和 iframe 具有相同的域,并且我能够将其附加到 iframe 内容的末尾:
var parentContainer = parent.document.querySelector("iframe[src*=\"" + window.location.pathname + "\"]");
parentContainer.style.height = document.body.scrollHeight + 50 + 'px';
这会“找到”父容器,然后将长度设置为 50 像素的软糖因子以移除滚动条。
没有任何东西可以“观察”文档高度的变化,我的用例不需要这个。在我的回答中,我确实带来了一种引用父容器的方法,而不使用烘焙到父/iframe 内容中的 id。
如果您可以使用固定的纵横比并且想要响应式 iframe,那么此代码将对您有用。这只是 CSS 规则。
.iframe-container {
overflow: hidden;
/* Calculated from the aspect ration of the content (in case of 16:9 it is 9/16=
0.5625) */
padding-top: 56.25%;
position: relative;
}
.iframe-container iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
iframe 必须有一个 div 作为容器。
<div class="iframe-container">
<iframe src="http://example.org"></iframe>
</div>
源代码基于这个站点,Ben Marshall有一个很好的解释。
function resizeIFrameToFitContent(frame) {
if (frame == null) {
return true;
}
var docEl = null;
var isFirefox = navigator.userAgent.search("Firefox") >= 0;
if (isFirefox && frame.contentDocument != null) {
docEl = frame.contentDocument.documentElement;
} else if (frame.contentWindow != null) {
docEl = frame.contentWindow.document.body;
}
if (docEl == null) {
return;
}
var maxWidth = docEl.scrollWidth;
var maxHeight = (isFirefox ? (docEl.offsetHeight + 15) : (docEl.scrollHeight + 45));
frame.width = maxWidth;
frame.height = maxHeight;
frame.style.width = frame.width + "px";
frame.style.height = frame.height + "px";
if (maxHeight > 20) {
frame.height = maxHeight;
frame.style.height = frame.height + "px";
} else {
frame.style.height = "100%";
}
if (maxWidth > 0) {
frame.width = maxWidth;
frame.style.width = frame.width + "px";
} else {
frame.style.width = "100%";
}
}
伊夫拉姆风格:
.myIFrameStyle {
float: left;
clear: both;
width: 100%;
height: 200px;
padding: 5px;
margin: 0px;
border: 1px solid gray;
overflow: hidden;
}
iframe 标签:
<iframe id="myIframe" src="" class="myIFrameStyle"> </iframe>
脚本标签:
<script type="text/javascript">
$(document).ready(function () {
$('myIFrame').load(function () {
resizeIFrameToFitContent(this);
});
});
</script>
这就是我的做法(在 FF/Chrome 中测试):
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function autoResize(iframe) {
$(iframe).height($(iframe).contents().find('html').height());
}
</script>
<iframe src="page.html" width="100%" height="100" marginheight="0" frameborder="0" onload="autoResize(this);"></iframe>
这里有几种方法:
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%"></iframe>
</body>
和另一个选择
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe>
</body>
如上图所示,使用 2 个选项隐藏滚动
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;height:150%;width:150%" height="150%" width="150%"></iframe>
</body>
破解第二个代码
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.example.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:150%;width:150%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="150%" width="150%"></iframe>
</body>
为了隐藏 iFrame 的滚动条,父级被设置为“overflow:hidden”以隐藏滚动条,并且 iFrame 的宽度和高度达到 150%,这会强制滚动条在页面之外,并且由于正文没有t 有滚动条人们可能不会期望 iframe 超出页面的边界。这会以全宽隐藏 iFrame 的滚动条!
来源:设置iframe 自动高度
我知道这篇文章很旧,但我相信这是另一种方法。我刚刚在我的代码上实现了。在页面加载和页面调整大小时都可以完美运行:
var videoHeight;
var videoWidth;
var iframeHeight;
var iframeWidth;
function resizeIframe(){
videoHeight = $('.video-container').height();//iframe parent div's height
videoWidth = $('.video-container').width();//iframe parent div's width
iframeHeight = $('.youtubeFrames').height(videoHeight);//iframe's height
iframeWidth = $('.youtubeFrames').width(videoWidth);//iframe's width
}
resizeIframe();
$(window).on('resize', function(){
resizeIframe();
});
要放置在标题中的 Javascript:
function resizeIframe(obj) {
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
}
这是 iframe html 代码:
<iframe class="spec_iframe" seamless="seamless" frameborder="0" scrolling="no" id="iframe" onload="javascript:resizeIframe(this);" src="somepage.php" style="height: 1726px;"></iframe>
Css 样式表
>
.spec_iframe {
width: 100%;
overflow: hidden;
}
对于 angularjs 指令属性:
G.directive ( 'previewIframe', function () {
return {
restrict : 'A',
replace : true,
scope : true,
link : function ( scope, elem, attrs ) {
elem.on ( 'load', function ( e ) {
var currentH = this.contentWindow.document.body.scrollHeight;
this.style.height = eval( currentH ) + ( (25 / 100)* eval( currentH ) ) + 'px';
} );
}
};
} );
注意百分比,我插入了它,以便您可以对抗通常为 iframe、文本、广告等进行的缩放,如果没有实现缩放,只需输入 0
这就是我在加载或事情发生变化时的方式。
parent.jQuery("#frame").height(document.body.scrollHeight+50);
如果您正在寻找无 jQuery 跨域解决方案,您可能想看看我的想法:
<main id="container"></main>
<script>
fetch('https://example.com').then(response => {
return response.text();
}).then(data => {
const iframeContainer = window.document.getElementById('container');
const iframe = document.createElement('iframe');
iframe.frameBorder = 'none';
iframe.width = '100%';
iframe.addEventListener("load", function() {
iframe.height = iframe.contentWindow.document.body.scrollHeight;
})
const finalHtml = data;
const blob = new Blob([finalHtml], {type: 'text/html'});
iframe.src = window.URL.createObjectURL(blob);
iframeContainer.appendChild(iframe);
})
</script>
我在这里阅读了很多答案,但几乎每个人都给出了某种跨域框架块。
示例错误:
未捕获的 DOMException:阻止具有源“null”的框架访问跨域框架。
相关线程中的答案也是如此:
我也不想使用第三方库iFrame Resizer
或类似库。
@bboydflo 的答案很接近,但我错过了一个完整的例子。https://stackoverflow.com/a/52204841/3850405
我正在使用width="100%"
,iframe
但代码也可以修改为使用宽度。
这就是我解决设置自定义高度的方法iframe
:
嵌入式iframe
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description"
content="Web site" />
<title>Test with embedded iframe</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<iframe id="ifrm" src="https://localhost:44335/package/details?key=123" width="100%"></iframe>
<script type="text/javascript">
window.addEventListener('message', receiveMessage, false);
function receiveMessage(evt) {
console.log("Got message: " + JSON.stringify(evt.data) + " from origin: " + evt.origin);
// Do we trust the sender of this message?
if (evt.origin !== "https://localhost:44335") {
return;
}
if (evt.data.type === "frame-resized") {
document.getElementById("ifrm").style.height = evt.data.value + "px";
}
}
</script>
</body>
</html>
iframe source
, 示例来自Create React App
但仅使用HTML
and JS
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description"
content="Web site created using create-react-app" />
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="text/javascript">
//Don't run unless in an iframe
if (self !== top) {
var rootHeight;
setInterval(function () {
var rootElement = document.getElementById("root");
if (rootElement) {
var currentRootHeight = rootElement.offsetHeight;
//Only send values if height has changed since last time
if (rootHeight !== currentRootHeight) {
//postMessage to set iframe height
window.parent.postMessage({ "type": "frame-resized", "value": currentRootHeight }, '*');
rootHeight = currentRootHeight;
}
}
}
, 1000);
}
</script>
</body>
</html>
setInterval
当然可以修改代码,但它非常适合动态内容。setInterval
仅当内容嵌入 a 时才激活,iframe
并且postMessage
仅在高度更改时发送消息。
您可以在此处阅读更多信息Window.postMessage()
,但描述非常适合我们想要实现的目标:
window.postMessage() 方法可以安全地启用 Window 对象之间的跨域通信;例如,在页面和它生成的弹出窗口之间,或者在页面和嵌入其中的 iframe 之间。
通常,当且仅当它们源自的页面共享相同的协议、端口号和主机(也称为“同源策略”)时,才允许不同页面上的脚本相互访问。window.postMessage() 提供了一种受控机制来安全地规避此限制(如果使用得当)。
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
如果你想要 100% 的宽度和高度,iframe
我会这样做:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description"
content="Web site" />
<style>
body {
margin: 0; /* Reset default margin */
}
iframe {
display: block; /* iframes are inline by default */
background: #000;
border: none; /* Reset default border */
height: 100vh; /* Viewport-relative units */
width: 100vw;
}
</style>
<title>Test with embedded iframe</title>
</head>
<body>
<iframe src="https://localhost:44335/package/details?key=123"></iframe>
</body>
</html>
来源:
简单:
var iframe = $("#myframe");
$(iframe.get(0).contentWindow).on("resize", function(){
iframe.width(iframe.get(0).contentWindow.document.body.scrollWidth);
iframe.height(iframe.get(0).contentWindow.document.body.scrollHeight);
});
<iframe src="hello.html" sandbox="allow-same-origin"
onload="this.style.height=(this.contentWindow.document.body.scrollHeight+20)+'px';this.style.width=(this.contentWindow.document.body.scrollWidth+20)+'px';">
</iframe>
如果内容只是很简单的html,最简单的方法就是用javascript去掉iframe
HTML 代码:
<div class="iframe">
<iframe src="./mypage.html" frameborder="0" onload="removeIframe(this);"></iframe>
</div>
Javascript代码:
function removeIframe(obj) {
var iframeDocument = obj.contentDocument || obj.contentWindow.document;
var mycontent = iframeDocument.getElementsByTagName("body")[0].innerHTML;
obj.remove();
document.getElementsByClassName("iframe")[0].innerHTML = mycontent;
}
<iframe src="..." style="border:none; width:100%; height: 100vh;"></iframe>