Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将iframe高度设置为其内容?_Javascript_Reactjs_Iframe - Fatal编程技术网

Javascript 如何将iframe高度设置为其内容?

Javascript 如何将iframe高度设置为其内容?,javascript,reactjs,iframe,Javascript,Reactjs,Iframe,我正在尝试在React中设置iframe高度,因为现在,iframe高度由于某种原因是滚动的,而不是完整高度 当我检查我的元素时,我的高度在标记中看起来很好,但在#document标记中,由于某种原因设置了高度 我查看了堆栈溢出,发现可以通过获取document.body.scrollheight来设置iframe heihgt onLoad 但是,我可以打印出文档,但是当我得到document.body时,我就没有定义。我的代码在下面 我该如何解决这个问题?或者有没有更好的方法将ifram e

我正在尝试在React中设置iframe高度,因为现在,iframe高度由于某种原因是滚动的,而不是完整高度

当我检查我的元素时,我的高度在标记中看起来很好,但在#document标记中,由于某种原因设置了高度

我查看了堆栈溢出,发现可以通过获取document.body.scrollheight来设置iframe heihgt onLoad

但是,我可以打印出文档,但是当我得到document.body时,我就没有定义。我的代码在下面

我该如何解决这个问题?或者有没有更好的方法将ifram eHight设置为其conetnet

 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
的高度。这并不难做到,它具有出色的浏览器支持,而且速度非常快(通信是在计算机内部完成的,而不是通过网络)