Javascript 如何将iframe高度设置为其内容?
我正在尝试在React中设置iframe高度,因为现在,iframe高度由于某种原因是滚动的,而不是完整高度 当我检查我的元素时,我的高度在标记中看起来很好,但在#document标记中,由于某种原因设置了高度 我查看了堆栈溢出,发现可以通过获取document.body.scrollheight来设置iframe heihgt onLoad 但是,我可以打印出文档,但是当我得到document.body时,我就没有定义。我的代码在下面 我该如何解决这个问题?或者有没有更好的方法将ifram eHight设置为其conetnetJavascript 如何将iframe高度设置为其内容?,javascript,reactjs,iframe,Javascript,Reactjs,Iframe,我正在尝试在React中设置iframe高度,因为现在,iframe高度由于某种原因是滚动的,而不是完整高度 当我检查我的元素时,我的高度在标记中看起来很好,但在#document标记中,由于某种原因设置了高度 我查看了堆栈溢出,发现可以通过获取document.body.scrollheight来设置iframe heihgt onLoad 但是,我可以打印出文档,但是当我得到document.body时,我就没有定义。我的代码在下面 我该如何解决这个问题?或者有没有更好的方法将ifram e
resizeIframe = () => {
var iFrameID = document.getElementById('iframeThreadBody');
if(iFrameID) {
//console.log(iFrameID.contentWindow.document); works
//console.log(iFrameID.contentWindow.document.body); undefined
iheight = iFrameID.contentWindow.document.body.scrollheight + 'px';
iFrameID.height = iheight;
//iFrameID.height = 500 +'px'; //also for some reason this doesnt work either.
}
}
render(){
return(
//random code
<iframe
id = "iframeThreadBody"
title = "threadBody"
className = "iframeBody"
srcDoc = {this.state.description}
onLoad = {this.resizeIframe(this)}/>
//code
)
}
resizeIframe=()=>{
var iFrameID=document.getElementById('iframeThreadBody');
if(iFrameID){
//log(iFrameID.contentWindow.document);有效
//log(iFrameID.contentWindow.document.body);未定义
iheight=iFrameID.contentWindow.document.body.scrollheight+'px';
iFrameID.height=iheight;
//iFrameID.height=500+'px';//出于某种原因,这也不起作用。
}
}
render(){
返回(
//随机码
//代码
)
}
任何帮助都将不胜感激您的脚本只能访问同一域源上的
iframe
内容DOM。出于安全考虑,禁止跨境访问。至少是直接的,因为你还有一个很好的方法:标准。如果你也有目标域的控制权,否则你就倒霉了,对不起
要进行跨源通信,请在目标文档中设置一个脚本以查询文档高度,然后使用
postMessage
将该信息传输到iframe
主机,该主机侦听消息
事件。然后主机相应地设置iframe
的高度。这并不难做到,它具有出色的浏览器支持,而且速度非常快(通信是在计算机内部完成的,而不是在网络上进行)。您的脚本只能访问同一域源上的iframe
内容DOM。出于安全考虑,禁止跨境访问。至少是直接的,因为你还有一个很好的方法:标准。如果你也有目标域的控制权,否则你就倒霉了,对不起
要进行跨源通信,请在目标文档中设置一个脚本以查询文档高度,然后使用postMessage
将该信息传输到iframe
主机,该主机侦听消息
事件。然后主机相应地设置iframe
的高度。这并不难做到,它具有出色的浏览器支持,而且速度非常快(通信是在计算机内部完成的,而不是通过网络)