js 子窗口获取调用父窗口js方法或者获取父窗口元素

12 篇文章 0 订阅

1 前提条件:父窗口调用js-window.showModalDialog()打开子窗口

父窗口js:

function newPatient() {
   var url = 'QWWWWWW';   window.showModalDialog(url,window,'dialogHeight:500px;dialogWidth:800px;scroll:no;center:yes;dialogLeft:200px;dialogTop:100px');
};

function query() { };

2 子窗口操作完成后关闭子窗口并调用父串口查询方法查新查询结果:

子窗口js:

function operator(oData){

1 调用父窗口js方法

window.dialogArguments.query();
2刷新父窗口

window.dialogArguments.location.reload();

3获取父窗口中的对象

//父窗口:
var parentWin = window.dialogArguments;

parentWin.document.getElementById("ShowModalDialogDiv").innerHTML;

//获取父窗口中的变量

parentWin.parValue;

//给父窗口赋值:

parentWin.document.getElementById("ShowModalDialogDiv").innerHTML="我是从子窗口ShowModalDialog传过来的值";

}

关闭本窗口:

window.parent.close();

关闭父窗口:

function CloseModal()

{     

       var IsIE = (navigator.appName == 'Microsoft Internet Explorer')

              if(IsIE){//如果是IE             

                     window.parent.parent.close();

                     //parentWin.opener=null;如果把上面的换成这行,不能关闭父窗口,

                     parentWin.close();

                     //window.parent.parent.parent.parent.close();这个只能关闭模态窗口本身目前只在IE6下测试

              }else{

                     alert("火狐不能直接关闭;需要以下设置1.开firefox,在地址栏输入about:config;2.找到dom.allow_scripts_to_close_windows这项并改为true");

              }     

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想在窗口调用共同方法获取返回的结果,可以使用下面的代码示例: ```javascript function addEventListenerAndReturnResultToParent(eventName, callback) { window.addEventListener(eventName, function(event) { var result = callback(event); // 调用回调函数获取结果 window.parent.postMessage(result, '*'); // 将结果发送给窗口 }); } function callChildWindowMethodAndReceiveResult(methodName, callback) { window.addEventListener('message', function(event) { if (event.data.methodName === methodName) { // 判断消息是否为指定的方法 var result = event.data.result; callback(result); // 调用回调函数处理结果 } }); var message = { methodName: methodName }; window.frames[0].postMessage(message, '*'); // 向窗口发送消息 } ``` 在这个共同方法中,我们添加了一个新的方法 callChildWindowMethodAndReceiveResult(),它接受两个参数:方法名称和回调函数。这个方法首先添加一个 message 事件监听器,以便在窗口调用 postMessage() 方法时接收结果。然后,它向窗口发送一个包含方法名称的消息。在窗口中,您需要使用 window.addEventListener() 方法监听 message 事件,并检查消息是否为指定的方法。如果是,您可以调用回调函数处理结果。 例如,如果您想在窗口调用窗口中的一个 addNumbers() 方法,并获取它的结果,可以这样使用这个方法: ```javascript callChildWindowMethodAndReceiveResult('addNumbers', function(result) { console.log('窗口返回的结果是:' + result); }); ``` 在这个例中,我们将方法名称 addNumbers 作为第一个参数传递给 callChildWindowMethodAndReceiveResult() 方法,并在回调函数中处理结果。在窗口中,您需要定义一个名为 addNumbers() 的函数,并在其中计算结果并使用 postMessage() 方法将结果发送回窗口: ```javascript function addNumbers(a, b) { var result = a + b; window.parent.postMessage({ methodName: 'addNumbers', result: result }, '*'); } ``` 在这个例中,我们将计算结果作为对象 { methodName: 'addNumbers', result: result } 发送回窗口窗口可以像之前的示例一样使用 window.addEventListener() 来监听这个事件,并获取发送的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值