首页 > 技术文章 > showmodaldialog用open替代并回传returnvalue

easyunion 2019-01-18 14:32 原文

使用window.showmodaldialog会出现一下浏览器不支持。 以下是通过window.open来代替解决方案

 CASE1:

  如果不需要子窗口向父窗口回传值的话 直接替代就可以了。

CASE2

  子窗口需要返回值给父窗口,open的就不能用returnval= window.showmodaldialog的方式获取返回值了。

     以下是一种用来回传参数的实现方式:原理 通过调用父类的方法,将回传至作为方法参数返回,父窗口用变量接收。

  调用的时候返现parent.parent_method()调用不掉父类的方法

   于是:

     var dept_id,dept_name ,dept_name;

    .......//省略生成返回值的代码

    if(window.opener!=null&&window.opener.backVal!=null&&window.opener.backVal!=undefined){
                window.opener.backVal(dept_id,dept_name,dept_name);
            }成功调用到了父窗口的backVal()方法。

 

  一下是backVal的定义(该方法设计初衷就是用来传值的当然你也可以定义一下方法进行相应的业务逻辑操作)

function  backVal(id,name,zjm){
        dept_id = id;
        dept_name = name;
        document.getElementById("dept_id").value=dept_id;
        document.getElementById('tt').innerText=dept_name+"预算绩效考核指标体系";
    }
   

 

推荐阅读