Javascript iframe在chrome/safari中使用滚动高度调整大小
我试图根据iframe的内容调整iframe的大小(使其变大或变小)。单击每个页面后,将调用一个方法来调整大小 在Chrome中,我可以使iframe更大,但不能更小。document.body.scrollHeight始终是最大值 因此,如果一个大页面设置了#iframe.height='620px',并且有人单击指向内容滚动高度较低页面的链接,则滚动高度将保持在620px,而不是降低Javascript iframe在chrome/safari中使用滚动高度调整大小,javascript,html,iframe,resize,Javascript,Html,Iframe,Resize,我试图根据iframe的内容调整iframe的大小(使其变大或变小)。单击每个页面后,将调用一个方法来调整大小 在Chrome中,我可以使iframe更大,但不能更小。document.body.scrollHeight始终是最大值 因此,如果一个大页面设置了#iframe.height='620px',并且有人单击指向内容滚动高度较低页面的链接,则滚动高度将保持在620px,而不是降低 在Chrome/Safari中处理此问题的正确方法是什么?您是否尝试使用document.documentE
在Chrome/Safari中处理此问题的正确方法是什么?您是否尝试使用
document.documentElement.scrollHeight
来代替?在询问iframe内文档的高度之前,您应该将iframe对象的高度设置为“自动”。大概是这样的:
objIframe = document.getElementById('theIframeId');
objIframe.style.height = 'auto';
现在:
document.body.scrollHeight
返回文档的实际高度。根据规范,
元素。scrollHeight
将值舍入为整数。如果需要精确的分数,请使用Element.getBoundingClientRect()
。!我们已经为此奋斗了好几天了!如果其他人遇到这个问题,我的解决办法是为Firefox设置“document.body.scrollHeight”,为Chrome设置“document.documentElement.scrollHeight”以及其他任何设置。。。我的示例使用postMessage作为跨域if(iFirefox){e.source.postMessage('height:'+document.body.scrollHeight,e.origin);}else{e.source.postMessage('height:'+document.documentElement.scrollHeight,e.origin);}
感谢您的回答,我只是好奇地把它包含在我的iFrame库@nitsuj中,您是如何决定在给定浏览器中收听或发送哪条消息的(body.scrollHeight vs.documentElement.scrollHeight)?在我的情况下,不是iframe,而是内部div
需要height:auto