JS 封装父页面子页面交互接口的实例代码
网络编程 2021-07-04 15:51www.168986.cn编程入门
这篇文章主要介绍了js 封装父页面子页面交互接口的实例代码,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
定义标准接口
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 (m.isEmpty(childWinId)) { alert("没有为子页面调用接口定义对象Id"); return; } //保存父页面提供给子页面调用的接口总对象 if (m.isEmpty(window.childCallbackObj)) { window.childCallbackObj = {}; } //与指定子页面对应的回调接口对象 var childCallbackObj = window.childCallbackObj; if (m.isEmpty(childCallbackObj[childWinId])) { childCallbackObj[childWinId] = {}; } var childObj = childCallbackObj[childWinId]; if (!m.isEmpty(childObj[functionName])) { alert("子页面" + childWinId + " 所需调用接口已存在" + functionName); return; } //检查接口是否为注册的接口 for (var pro in Interface.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 (m.isEmpty(childWinId)) { alert("子页面调用接口定义对象Id不能为空!"); return false; } if (m.isEmpty(childCallbackObj)) { alert("父页面调用接口定义的对象不存在"); return false; } var childObj = childCallbackObj[childWinId]; if (m.isEmpty(childObj)) { alert("子页面调用接口定义的对象不存在"); return false; } if (m.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]; return childObj[funcName].call(parentWin, params); } demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>父页面</title> </head> <body> <script src="js/mon.js"></script> <script> //传给子页面的值 Interface.ParentWin.setFunForChild("data", Interface.ParentWin.funName.getDataFun, function() { return value; }); //获取子页面函数并调用 window.fun; Interface.ParentWin.setFunForChild("test",Interface.ParentWin.funName.updateDataFun,function(param){ fun = param; }); //调用 var val = fun("1111"); console.log(val); </script> </body> </html> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>子页面</title> </head> <body> <script src="js/mon.js"></script> <script> //父页面传入数据 var data = Interface.ChildWin.callBack("data", Interface.ParentWin.funName.getDataFun); console.log(data); //提供给父页面调用的函数 Interface.ChildWin.callBack("test",Interface.ParentWin.funName.updateDataFun,function(data){ alert(data); var str = "xxx"; return str; }); </script> </body> </html>
以上所述是长沙网络推广给大家介绍的JS 封装父页面子页面交互接口的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,长沙网络推广会及时回复大家的!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程