【发布时间】:2013-11-18 18:56:15
【问题描述】:
首先,我有非常非常基本的 Javascript 知识和过时的 HTML 知识,所以我一直像个恶魔一样复制和粘贴,试图让它工作。
这是我目前使用的代码:(基于https://stackoverflow.com/a/819455/3005885)
<script language="JavaScript">
<!--
function autoResize(id){
var newheight;
var newwidth;
if(document.getElementById){
newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
}
document.getElementById(id).height= (newheight) + "px";
document.getElementById(id).width= (newwidth) + "px";
}
//-->
</script>
<iframe id="iframe1" name="iframe1" src="source.html" width="100%" frameborder="0" onLoad="autoResize('iframe1');"></iframe>
我有一行 CSS/Javascript 的“按钮”,可以将您转到网站上的不同页面,并且在相关页面上有一个 iframe 和一系列包含在表格中的链接(用于组织目的)。当您第一次单击相关页面的“按钮”时,iframe 会以最小高度显示,直到您再次单击“按钮”,然后调整大小才会正常运行。
我一直在尝试让脚本(实际上是几个不同的脚本)来控制 iframe 元素,但似乎 iframe 必须“存在”才能听脚本。
我希望页面在 iframe 中以全高加载“source.html”页面,并且 iframe 的高度由指向 iframe 的其他页面决定。
编辑 1: 我刚刚尝试过这种方法:https://stackoverflow.com/a/526373/3005885,结果与以前相同。我做错了什么吗?一些基本的东西? JS 完美运行,但只有在第二次点击链接加载 iframe 所在的页面后,点击刷新/重新加载(或 command-R)并没有什么不同。
编辑 2: 这是另一种行为与我提到的其他方法相同的方法,只有这种方法会禁用滚动条,即使在初始加载太小而无法看到任何内容 (https://www.ibm.com/developerworks/community/blogs/peteryim/entry/determining_the_iframe_height_based_on_its_content6?lang=en) 时也是如此。
【问题讨论】:
-
我会在
iframe内做something like this。 -
这似乎对我不起作用。我突然想到,我很可能错过了一些非常基本的东西(即:如何调用 Javascript、DOCTYPE 等)。不过谢谢你的建议,这似乎是一个不错的建议
-
我的回答有点伪代码。在
window.onload在iframe中触发后,您需要计算iframeContentWidth/Height。如果不会出现任何cross-domain 问题,则可以确保在所有浏览器中工作。
标签: javascript html iframe