>  기사  >  웹 프론트엔드  >  js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法_html/css_WEB-ITnose

js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法_html/css_WEB-ITnose

WBOY
WBOY원래의
2016-06-24 11:57:27900검색

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


这里使用 eval() 函数

定义和用法

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



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

http://localhoust:8080/oss-portlet/html/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 "";
        }
    }
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.