今天写代码时发现同一页面多个地方需要调用同一个子页面,如果多个方法调用时,同一子页面回调父页面方法则会出问题,所以查了下资料,让这个功能通用化,根据具体方法回调具体父页面方法,顺便总结一下,希望以后可以有用,或许可以帮助需要帮助的人


这里使用 eval() 函数

定义和用法

eval() 函数可计算某个字符串,并执行其中的的 Script 代码。



父页面调用子页面的路径(子页面的路径)如下

http://localhoust:8080/oss-portlet//util/area.html?oid=4&name=测试&callBack=callBackDistrict

callback:参数为父页面的具体方法名称


子页面调用父页面的callback指定的方法


eval('window.opener.' + getParams("callBack") + '(\'' + ids + '\',\'' + names + '\')');

window.close();


/**
* 获取页面路径参数值
*/
function getParams(key) {
var href = window.document.location.href;
if (href.indexOf("?") != -1) {
var paramStr = href.substring(href.indexOf("?") + 1, href.length);
if (paramStr.indexOf(key + "=") != -1) {
paramStr = paramStr.substring(paramStr.indexOf(key + "="),
paramStr.length);
if (paramStr.indexOf("&") != -1) {
return paramStr.substring(paramStr.indexOf("=") + 1, paramStr
.indexOf("&"));
} else {
return paramStr.substring(paramStr.indexOf("=") + 1,
paramStr.length);
}
} else {
return "";
}
}
}