Interface={};
Interface.ParentWin={};
Interface.ChildWin={};/**
* 父页面提供的标准接口函数名称*/Interface.ParentWin.funName={
getDataFun:"getDataFun", //子页面调用,提供给子页面的数据接口
updateDataFun: "updateDataFun", //子页面调用,向父页面提交数据接口
closeFun: "closeFun" //子页面需要关闭时,调用父页面的关闭窗口接口
}/**
* 父页面设置需要提供给子页面的接口函数
* @param childWinId :要使用的子页面对应接口的id,该id需要与子页面中定义的id一致
* @param functionName : 需要注册的回调函数名称,接口名称只能是Interface.ParentWin.funName中定义的名称
* @param callbackFun :子页面数据向父页面更新数据时的回调函数,接口入参为js对象*/Interface.ParentWin.setFunForChild= function(childWinId, functionName, callbackFun) {if(comm.isEmpty(childWinId)) {
alert("没有为子页面调用接口定义对象Id");return;
}//保存父页面提供给子页面调用的接口总对象
if(comm.isEmpty(window.childCallbackObj)) {
window.childCallbackObj={};
}//与指定子页面对应的回调接口对象
var childCallbackObj =window.childCallbackObj;if(comm.isEmpty(childCallbackObj[childWinId])) {
childCallbackObj[childWinId]={};
}var childObj =childCallbackObj[childWinId];if (!comm.isEmpty(childObj[functionName])) {
alert("子页面" + childWinId + " 所需调用接口已存在" +functionName);return;
}//检查接口是否为注册的接口
for (var pro inInterface.ParentWin.funName) {if (Interface.ParentWin.funName[pro] ==functionName) {
childObj[functionName]=callbackFun;return;
}
}
alert("子页面 " + childWinId + " 所需调用接口未注册:" + functionName + "。请检查接口定义声明对象。");
}/**
* 检查指定的子页面调用接口是否存在*/Interface.ChildWin.checkValid= function(childWinId, funName) {var parentWin =window.parent;var childCallbackObj =parentWin.childCallbackObj;if(comm.isEmpty(childWinId)) {
alert("子页面调用接口定义对象Id不能为空!");return false;
}if(comm.isEmpty(childCallbackObj)) {
alert("父页面调用接口定义的对象不存在");return false;
}var childObj =childCallbackObj[childWinId];if(comm.isEmpty(childObj)) {
alert("子页面调用接口定义的对象不存在");return false;
}if(comm.isEmpty(childObj[funName])) {
alert("父页面调用接口定义不存在:" +funName);return false;
}return true;
}/**
* 子页面调用父页面的接口函数
* @childWinId :子页面定义的自身页面Id
* @funcName : 需要调用的回调函数名称
* @params : 需要传递的参数
* @return :如果函数有返回值则通过其进行返回*/Interface.ChildWin.callBack= function(childWinId, funcName, params) {if (!Interface.ChildWin.checkValid(childWinId, funcName)) {return;
}var parentWin =window.parent;var childObj =parentWin.childCallbackObj[childWinId];returnchildObj[funcName].call(parentWin, params);
}