标签:
目前,新版本的chrome和opera、Firefox等浏览器已经不支持showModalDialog方法。
如果是没有接收返回值的,可以直接将window.showModalDialog改为window.open。
需要接收返回值的情况:
父页面设置:
var uIdName; function chooseuser_m() { var num = Math.random(); var str = "" + document.getElementById(‘wfUserIDs‘).value + ""; try { uIdName = window.showModalDialog("../../Choose/ChooseUser.aspx?tmp=" + num + "&rqstr=" + str + "", "window", "dialogWidth:650px;DialogHeight=520px;status:no;scroll=no;help:no"); var arr = uIdName.split("|"); for (var i = 0; i < arr.length; i++) { document.getElementById("wfUserIDs").value = arr[0]; document.getElementById("wfUserNames").value = arr[1]; } } catch (e) { window.open("../../Choose/ChooseUser.aspx?tmp=" + num + "&rqstr=" + str + "", "window", "dialogWidth:650px;DialogHeight=520px;status:no;scroll=no;help:no"); } }
这里先将原来的方法改成window.open,接下来是子页面的设置:
function sendFromChild() { if ((navigator.userAgent.indexOf(‘MSIE‘) >= 0) && (navigator.userAgent.indexOf(‘Opera‘) < 0)) { window.returnValue = chkSelect(); //chkSelect()获取一组数据 } else { chkSelectChrome(); } window.close(); } //for chrome 2015-03-07 function chkSelectChrome() { var uIdName = chkSelect(); var arr = uIdName.split("|"); for (var i = 0; i < arr.length; i++) { opener.document.all.wfUserIDs.value = arr[0]; //wfUserIDs opener.document.all.wfUserNames.value = arr[1]; } }
这里只判断非IE下的方法,在chrome下测试通过,其他非IE浏览器没有测试。
opener.document.all.IDName.value //直接对父窗体赋值 ID必须对应 否则报错
window.showModalDialog与window.open所带的参数可以是一样的,弹出的窗口不会改变
关于chrome等浏览器不支持showModalDialog的解决方案
标签:
原文地址:http://www.cnblogs.com/bo10296/p/4320000.html