动态iframe高度 - 似乎需要重新加载页面

时间:2013-11-18 18:56:15

标签: javascript html iframe

首先,我对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才会再次出现,单击刷新/重新加载(或命令-R)并没有什么区别。

编辑2: 这是另一种方法,其行为与我提到的其他方法相同,只有这个方法禁用滚动条,即使在最初太小到看不到任何加载(https://www.ibm.com/developerworks/community/blogs/peteryim/entry/determining_the_iframe_height_based_on_its_content6?lang=en)。

1 个答案:

答案 0 :(得分:0)

事实证明,问题是重定向设置为将访问者从我们的主URL指向站点实际存在的目录(组织噩梦,但此时是必需的)。错误如下:

Uncaught SecurityError: Blocked a frame with origin "http://www.mysite.org" from accessing a frame with origin "http://www.mysite.com". Protocols, domains, and ports must match. 

以某种方式.com隐藏在.org网站的重定向中。由于我不知道的原因(服务器端的某些内容),该网站使用.com而不是.org正常运行,但它真的与javascript混淆。因此,罪魁祸首是键入太快,并且称之为“未来的按键”。

鸡蛋在我脸上,鸡蛋在我脸上。