JS模态窗口返回值兼容问题解决方案

因系统要兼容原IE已使用的关闭方法,经调试测得,需对window.dialogArguments进行再较验,不然易出问题。

function OKEnd(vals) {
if (vals == null) vals = "TRUE";
if (typeof (window.opener) == "undefined") {
if (typeof (window.dialogArguments) != "undefined") {
if (window.dialogArguments && window.dialogArguments != null) {
window.opener = window.dialogArguments;
if (window.opener && window.opener != null) {
window.opener.ReturnValue = vals;
}
}
}
}
else {
if (window.opener && window.opener != null) {
window.opener.ReturnValue = vals;
}
}
window.returnValue = vals;
self.close();
}

返回值接收的,只需在原有IE的接收模式下,多较验一下opener就可以了,如下:

//选择变更部门
function SetOrganizeTree2() { var url="弹出页面";
var ret = window.showModalDialog(url, window, "dialogWidth=400px;dialogHeight=500px;status=no;help=no;scroll=yes;resizable=yes;");
<span style="color:#ff0000"> if (typeof (ret) == "undefined") {
ret = window.ReturnValue;
}</span>
if (ret) {
document.getElementById("hidDeptCode2").value = ret;
document.getElementById("btnDeptCodeAdd").click();
}
return false;
}

-----------------------------------------------------------------------------------------------------------------------

1、打开弹出窗口时把 window 作为第二个参数传入。

var result = window.showModalDialog(url, window, "dialogWidth=" + width + "px;dialogHeight=" + height + "px;resizable:yes;")

if (typeof (result) == ‘undefined‘) {

result = window.ReturnValue;

}

return result;

2、在弹出窗口中,执行如下JS,以接收传入的window

if (typeof (window.opener) == ‘undefined‘) window.opener = window.dialogArguments;

3、弹出窗口关闭前,调用如下JS赋返回值

window.retureValue = vals;

if (window.opener && window.opener != null)

window.opener.ReturnValue = vals;

window.close();

博客园davidyang78原创,转载请保留此信息

原理探讨:

chrome下,标准方法,在弹出页面不回发的情况下,是可以返回值的。 有回发则不能正常返回值。此方法可以解决。

IE下标准方法,有时不明原因不能正确返回值,此方法可解决。

FF未详细测试,应该问题不大。

时间: 2024-10-28 10:48:15

JS模态窗口返回值兼容问题解决方案的相关文章

模态窗口返回值兼容解决

1.打开弹出窗口时把 window 作为第二个参数传入. var result = window.showModalDialog(url, window, "dialogWidth=" + width + "px;dialogHeight=" + height + "px;resizable:yes;") if (typeof (result) == 'undefined') { result = window.ReturnValue; } re

js模态窗口返回值(table)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: 1 /** 2 * Get Object of return from js 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9

js获取ajax返回值

z = $.ajax({url:"__URL__/add/",type:'POST',dataType:"json",async:false,cache:false,data:"step=ajax&ajax_type=checkEmail&email="+email,}).responseText;js获取ajax返回值,码迷,mamicode.com

js中return返回值小练习

本文只是帮助初学者入门用的 关于js中的返回值return 如果函数中存在return,执行到了那行之后就直接跳出整个函数,接着向下执行 上例子 定义一个函数是否是偶数,如果是返回true,如果不是返回false? 我相信大多数才学的人会这样写 function isOu(num){ if(num%2==0){ return true }else{ return false } } 这样写不是不可以,只是有点啰嗦 因为num%2==0本身就是一个判断,所以 function isOu(num){

js模态窗口

最近在看js,正好公司用的框架中用到了模态窗口,以前没有接触过,现在把模态窗口的用法先记下来. 常用的浏览器chrome,Firefox,ie11,这三种分别支持document.open(),window.showModalDialog(),window.showModalDialog()的方式.下面还是直接给出代码,比较直观: motaichuangkou.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E

ajax返回值 json 乱码 解决方案

ajax的返回值一直乱码, 试过各种ContentType设定utf-8的方法,就是搞不定, 而且明明返回值是json字符串,一直出现ajax取得返回值类型为object. 最后查资料发现, SpringMVC使用 @ResponseBody注解,返加字符串不做任何处理时,有可能会出现乱码问题. 这是由于 StringHttpMessageConverter 类中,默认采用的字符集是 ISO-8859-1. public class StringHttpMessageConverter exte

HTML 父窗口打开子窗口,并从子窗口返回值

父窗口:windowdemo.html <html> <head> <title> 接收子窗口返回的内容 </title> <script language="JavaScript"> function shownewpage(thisurl) { window.open('content.html','content','width=480,height=330,top=150,left=280, toolbar=no, m

Node.js的函数返回值

先看一段代码: function select(sqlscript){    var result = "";    sql.connect(config, function(err) {        var request = new sql.Request();        request.query(sqlscript, function(err, recordset) {            result = recordset;            console.l