主窗口和iframe都在同一个域上,但我想实现的是仅在该iframe中使用js来调整iframe的大小以适应其内容。
我也不知道主窗口分配给它的iframe的id。我不想使用jquery或任何其他框架。
您也可以在不知道父窗口中iframe
的id
的情况下执行此操作:
window.frameElement.style.width = iframeContentWidth + 'px';
window.frameElement.style.height = iframeContentHeight + 'px';
参见MDN的frameElement
。
编辑
万一iframe
恰好在一个具有固定大小和overflow: hidden
的容器元素中,您可以执行以下操作:
function resizeIframe (iframeContentWidth, iframeContentHeight) {
var container = window.frameElement.parentElement;
if (container != parent.document.body) {
container.style.width = iframeContentWidth + 'px';
container.style.height = iframeContentHeight + 'px';
}
window.frameElement.style.width = iframeContentWidth + 'px';
window.frameElement.style.height = iframeContentHeight + 'px';
return;
}
对于像您这样的同源内容,是的,您可以。
借用Gary对上述问题的回答:
在iframe中,window.parent指的是父对象的全局对象文档,而不是文档对象本身。我相信你需要使用parent.document.getElementById
尝试使用parent.document访问iframe,看看这是否解决了您的问题。
假设主窗口中只有一个IFRAME,那么从IFRAME文档的Javascript中,您可以执行以下操作:
function getMySelf()
{
return (window.parent.document.getElementsByTagName("iframe"))[0];
}
var myself = getMySelf();
myself.style.width = whateverWidth;
myself.style.height = whateverHeight;