首先得知道window.showModalDialog()方法到底是干嘛的,有什么作用.
基本介紹:
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog() 方法用來創建一個顯示HTML內容的模態對話框。
window.showModelessDialog() 方法用來創建一個顯示HTML內容的非模態對話框。
使用方法:
vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])
參數說明:
sURL -- 必選參數,類型:字符串。用來指定對話框要顯示的文檔的URL。
vArguments -- 可選參數,類型:變體。用來向對話框傳遞參數。傳遞的參數類型不限,包括數組等。對話框通過
window.dialogArguments來取得傳遞進來的參數。
sFeatures -- 可選參數,類型:字符串。用來描述對話框的外觀等信息,可以使用以下的一個或幾個,用分號“;”隔開。
----------------
1. dialogHeight: 對話框高度,不小於100px
2. dialogWidth: 對話框寬度。
3. dialogLeft: 離屏幕左的距離。
4. dialogTop: 離屏幕上的距離。
5. center: { yes | no | 1 | 0 } : 是否居中,默認yes,但仍可以指定高度和寬度。
6. help: {yes | no | 1 | 0 }: 是否顯示幫助按鈕,默認yes。
7. resizable: {yes | no | 1 | 0 } [IE5+]: 是否可被改變大小。默認no。
8. status: {yes | no | 1 | 0 } [IE5+]: 是否顯示狀態欄。默認為yes[ Modeless]或no[Modal]。
9. scroll: { yes | no | 1 | 0 | on | off }:是否顯示滾動條。默認為yes。
以上內容來自於http://www.cnblogs.com/Dlonghow/archive/2009/06/04/1496141.html
然后發現在谷歌,火狐瀏覽器根本都彈不出來模態對話框,按F12打開調試器發現window.showModalDialog()在這兩個瀏覽器中是根本沒有定義的.
解決方法:
$(function(){
if(window.showModalDialog == undefined){
//alert("初始化的時候,判斷window.showModalDialog是否存在")
window.showModalDialog = function(url,mixedVar,features){
window.hasOpenWindow = true;
if(mixedVar) var mixedVar = mixedVar;
if(features) var features = features.replace(/(dialog)|(px)/ig,"").replace(/;/g,',').replace(/\:/g,"=");
window.myNewWindow = window.open(url,"_blank",features);
}
}
});
一加載頁面的時候,我們就判斷這個方法是否是undefined未定義的,如果是,我們給window.showModalDialog()重新賦予新的函數.
原來的寫法不變
var returnValue =window.showModalDialog(url,window,"dialogHeight:800px;dialogWidth:800px;center:yes");
子窗口的寫法
//選擇優惠券
function chooseCoupon(id) {
var couponName =$('#'+id).val();
var val={id: id,name:couponName};
if (window.opener != undefined) {
//for chrome
window.opener.returnValue = val;
}
else {
window.returnValue = val;
}
//調用父窗口方法
opener.fuzhi(val);
window.close();
}
然后遇到打開子窗口的時候就給returnValue賦值,不統一.所以這邊換了opener.fuzhi()寫法,調用了父類fuzhi的函數,讓我們得到的返回值做剩下的業務操作.
————————————————
版權聲明:本文為CSDN博主「Java_wucao」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Java_wucao/article/details/78401525