...

View Full Version : window.showModalDialog for Mozilla



x_goose_x
12-07-2003, 06:08 AM
Somewhat tested on Moz1.5



<html>
<head>
<script language="JavaScript1.2" type="text/javascript">

/*
Notes:
1. edge & help attributes do not work.
2. "height" & "width" must be entered before "center"
3. if you should choose to set "center=yes" do not put in "left" and "top"
4. Minimize button not hidden, but when clicked the window will not disappear
5. Aside from the aforementioned, all features should react the same *fingers crossed*
6. Still in the works, so don't expect miracles. Any problems/queries/complaints please don't hesitate.
Email:
x_goose_x@hotmail.com
*/

dFeatures = 'dialogHeight: 450px; dialogWidth: 1049px; dialogTop: 646px; dialogLeft: 4px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;';//default features

modalWin = "";
function xShowModalDialog( sURL, vArguments, sFeatures )
{
if (sURL==null||sURL=='')
{
alert ("Invalid URL input.");
return false;
}
if (vArguments==null||vArguments=='')
{
vArguments='';
}
if (sFeatures==null||sFeatures=='')
{
sFeatures=dFeatures;
}
if (window.navigator.appVersion.indexOf("MSIE")!=-1)
{
window.showModalDialog ( sURL, vArguments, sFeatures );
return false;
}
sFeatures = sFeatures.replace(/ /gi,'');
aFeatures = sFeatures.split(";");
sWinFeat = "directories=0,menubar=0,titlebar=0,toolbar=0,";
for ( x in aFeatures )
{
aTmp = aFeatures[x].split(":");
sKey = aTmp[0].toLowerCase();
sVal = aTmp[1];
switch (sKey)
{
case "dialogheight":
sWinFeat += "height="+sVal+",";
pHeight = sVal;
break;
case "dialogwidth":
sWinFeat += "width="+sVal+",";
pWidth = sVal;
break;
case "dialogtop":
sWinFeat += "screenY="+sVal+",";
break;
case "dialogleft":
sWinFeat += "screenX="+sVal+",";
break;
case "resizable":
sWinFeat += "resizable="+sVal+",";
break;
case "status":
sWinFeat += "status="+sVal+",";
break;
case "center":
if ( sVal.toLowerCase() == "yes" )
{
sWinFeat += "screenY="+((screen.availHeight-pHeight)/2)+",";
sWinFeat += "screenX="+((screen.availWidth-pWidth)/2)+",";
}
break;
}
}
modalWin=window.open(String(sURL),"",sWinFeat);
if (vArguments!=null&&vArguments!='')
{
modalWin.dialogArguments=vArguments;
}
}

function checkFocus()
{
if (window.navigator.appVersion.indexOf("MSIE")==-1)
{
if (modalWin!=null && !modalWin.closed)
{
self.blur();
modalWin.focus();
}
}
}


</script>

</head>
<body onFocus="checkFocus();">
<br>
<br>
<input type="button" onclick="javascript:xShowModalDialog('test.htm',this,'');" value="click">
</body>
</html>

glenngv
12-08-2003, 01:47 AM
Checking for null is not enough:



if (modalWin!=null)
{
self.blur();
modalWin.focus();
}


If the popup is closed, modalWin is still not null.



if (modalWin!=null && !modalWin.closed)
{
self.blur();
modalWin.focus();
}

x_goose_x
12-08-2003, 01:51 AM
Thanks, forgot about that. Changes made.

glenngv
12-08-2003, 02:01 AM
IMO, it's better like this:



if (typeof window.showModalDialog != 'undefined'){
window.showModalDialog = function(sURL, vArguments, sFeatures){
//...(no more checking for IE)
}
}



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum