Js ifame和父窗口内函数如何互调

6 篇文章 0 订阅

页面A,其内部有个iframe,部分 html代码如下:

<div><iframe name="ifm" width="100%" height="829" id="ifmApp" src="B.asp?co=1&tp=5&ut=1&id=&gd=11&gm=1&ar=2&sv=0" frameBorder="0" marginWidth="0" marginHeight="0" scrolling="no"></div>

A页面中有段js脚本如下:

var System={    
    CloseFrame:function () {
        try{
                var frames=document.getElementById("ifmApp"); 
                var AppHelper= frames.contentWindow.AppHelper; 
                if(AppHelper!=null && typeof(AppHelper)=="object"&&typeof(AppHelper.CloseQuery)=="function"){                
                    if(!AppHelper.CloseQuery())return ; 
                }
            }catch(e){            
            }    
       System.Close();
    },
    Close:function () {
        document.body.removeChild(ifrm);
    }   
};

iframe src所对应的B.asp页面,其中有js函数:

var Apphelper={
	CloseQuery:function(){
		if(val="1")return true;
		return false;
	},
	Close:function(){			
		if(parent!=null&&typeof(parent)=="object"){             
                var System=parent.System;
                if(System!=null && typeof(System)=="object"){
                    if(System.Close!=null && typeof(System.Close)=="function"){
                        System.Close();
                        return;
                    }
                }
            }
	}	
};

父页面A,通过调用自己的System.CloseFrame来调用ifrme中的函数Apphelper.CloseQuery

Ifame中的B页面,通过调用自己的Apphelper.Close函数来调用父窗口中的System.Close

当然,实现这样的简单调用有个前提,就是A和B需要同域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值