目前,新版本的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 -03-07function chkSelectChrome() {var uIdName = chkSelect();var arr = uIdName.split("|");for (var i = 0; i < arr.length; i++) {opener.document.all.wfUserIDs.value = arr[0]; //wfUserIDsopener.document.all.wfUserNames.value = arr[1];}}
这里只判断非IE下的方法,在chrome下测试通过,其他非IE浏览器没有测试。
opener.document.all.IDName.value //直接对父窗体赋值 ID必须对应 否则报错
window.showModalDialog与window.open所带的参数可以是一样的,弹出的窗口不会改变