在iframe中如何调用父窗体的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在iframe中如何调用父窗体的方法?相关的知识,希望对你有一定的参考价值。

主窗体(即iframe的父窗体)...通过js生成一个iframe,id为ifrm,请问如何在iframe下调用主窗体的js自定义方法?

iframe里面的页面调用父窗口,左右窗口js函数的方法
实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。
比如有A窗口,A内有个IFRAME B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数AFUN();
那么只要在C页面中写如下JS函数就可以了:
window.parent.AFUN();
如果AFUN()有参数也可以直接传递合适的参数进去。
例如:
修改父窗口控件属性
window.parent.document.getElementById('frmright').src=window.parent.document.getElementById('frmrightsrc').value;
调用父窗口函数
window.parent.POPUP('bigFram');
父窗口调用iframe子窗口方法
<iframe name="myFrame" src="child.html"></iframe>
myFrame.window.functionName();
iframe子窗口调用父窗口方法
parent.functionName();

////////////////////////////////////
用js互相调用iframe页面内的js函数
一个html页面,分成左右两块,左边为导航栏,右边为需要显示的内容,代码如下:
左栏的代码为:
<IFRAME frameBorder=0 id=frmTitleLeft name=framLeft src="left.html" style="HEIGHT: 100%; width:180px;">
连接到left.html
比如右栏中有一个函数right(),我要在左栏的链接中调用right()函数,该如何实现呢
1,首先leftframe是内嵌在容器页index.html中的,因此需要先返回到index这一级别,并取得rightframe对象
var frames=window.parent.window.document.getElementById("frameid");
2,要能执行其页面中的函数,必须要获得window对象,这里有一个重要的对象contentWindow,获得这个对象,即可执行其中的函数了,如
frames.contentWindow.right();
以上代码兼容IE6,Firefox3,chrome2.0,均成功通过测试,IE7没试过,不过应该没问题。
3.例如:
window.parent.document.getElementById('leftFrame').contentWindow.JSMenu('MenuUl'+Sid);
window.parent.frames["leftFrame"].JSMenu('MenuUl'+Sid);
////////////////////////////////////////
还有下面一种,没测试过
并不是象通常那样iframeName.test();——test()为iframe里的方法。因为要写一个通用一点的东西,所以是从一个配置文件中动态获取到iframe的id。然后调用里面的方法。可是不成功。相烦帮忙看一看。代码如下:
<iframe id="iframe1"></iframe>

var cs = document.all;
for(var i = 0; i < cs.length; i++)
if(cs.tagName.toUpperCase() == "IFRAME")
if(cs.id == "iframe1")
alert(frmDealData);
alert(cs);
document.frames.iframe1.setScreenletStatus(iframeLayoutLvl);
document.frames.cs.setScreenletStatus(iframeLayoutLvl);


参考技术A 我用不好使!我的iframe和主窗体不是同域名是不是不行呀?不同域名当然不行,不允许跨域。如果顶级域名相同,2级或者n级域名互访可以设置document.domain='顶级域名'就可以互相操作了 参考技术B parent.父窗体注册js事件(/*参数*/);本地file测试不要使用webkit核心的浏览器如chrome,无法互访 参考技术C parent.func();
func就是你要调用的方法

Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法

在父窗口中获取iframe中的元素 

1、

格式:window.frames["iframe的name值"].document.getElementByIdx_x("iframe中控件的ID").click();

实例:window.frames["ifm"].document.getElementByIdx_x("btnOk").click();

2、

格式:

var obj=document.getElementByIdx_x("iframe的name").contentWindow;

var ifmObj=obj.document.getElementByIdx_x("iframe中控件的ID");

ifmObj.click();

实例:

var obj=document.getElementByIdx_x("ifm").contentWindow;

var ifmObj=obj.document.getElementByIdx_x("btnOk");

ifmObj.click();

在iframe中获取父窗口的元素

格式:window.parent.document.getElementByIdx_x("父窗口的元素ID").click();

实例:window.parent.document.getElementByIdx_x("btnOk").click();

jquery

在父窗口中获取iframe中的元素 

1、

格式:$("#iframe的ID").contents().find("#iframe中的控件ID").click();//jquery 方法1

实例:$("#ifm").contents().find("#btnOk").click();//jquery 方法1

2、

格式:$("#iframe中的控件ID",document.frames("frame的name").document).click();//jquery 方法2

实例:$("#btnOk",document.frames("ifm").document).click();//jquery 方法2

在iframe中获取父窗口的元素

格式:$(‘#父窗口中的元素ID‘, parent.document).click();

实例:$(‘#btnOk‘, parent.document).click();

以上是关于在iframe中如何调用父窗体的方法?的主要内容,如果未能解决你的问题,请参考以下文章

附实例!实现iframe父窗体与子窗体的通信

delphi 子窗体如何调用父窗体的方法

Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法

在iframe窗体内 获取父级的元素;;在父窗口中获取iframe中的元素

SCRIPT5011:不能执行已释放Script的代码

c#如何把子窗体的值传给父窗体?