从iFrame内部调用父函数以更改元素高度

时间:2012-02-18 08:47:33

标签: javascript function iframe parent

我正在构建我的第一个网站,我有一个主要元素,应该延伸到iFrame内容的高度。我需要在NavBox.htm中单击(也在iFrame中进入Index页面),在Index.htm的主iFrame中显示SubFolder / SubPage.htm(主要是明文),并在Index.htm中调用一个更改元素高度的函数取决于子页面的长度。

当调用较长的页面时它起作用,但如果调用较短的页面,它实际上会增加我添加的填充大小(20px)(如果我取下填充它只保持相同的大小)。我很确定这是我的语法中的一个简单错误,但我无法通过元素内的新页面重新计算。

在Index.htm上我有以下函数来改变元素高度:

function frm_onload(frmname) {
    frmname.frameElement.height = frmname.document.body.scrollHeight+20;
}

进一步向下是实际的iFrame调用:

<iframe id="Center" width=98%; LANGUAGE=javascript ONLOAD="return frm_onload(Center)" marginwidth="0" marginheight="0" frameborder="0" ></iframe>

在NavBox.htm子页面上,我有一个更改元素内容的链接:

<a href="SubFolder/SubPage.htm" target="Center" onclick="document.getElementById('Center').src=SubFolder/SubPage">SubPage</a>

所以,如果我直接思考那些我不理解的功能,或者我需要NavBox中的链接来做更多事情。非常感谢你们提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

我回答了一个非常类似于here的问题。您可以使用此功能:

function addCSSToParent(url) {
    var link = document.createElement('link');
    link.rel = 'stylesheet';
    link.href = url;
    link.type = 'text/css';
    window.parent.document.getElementsByTagName('head')[0].appendChild(link);
}

// Add some CSS
addCSSToParent('some.css');

它允许您附加.css文件以便为父级设置样式。您可以使用$(window.parent.document)在jQuery中从iframe内部访问父文档。所以你只需要向父节点添加一个css文件,或者使用jQuery定义元素高度的样式。