CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Post a JavaScript (http://www.codingforums.com/forumdisplay.php?f=19)
-   -   window.showModalDialog for Mozilla (http://www.codingforums.com/showthread.php?t=29864)

x_goose_x 12-07-2003 06:08 AM

window.showModalDialog for Mozilla
 
Somewhat tested on Moz1.5

PHP Code:

<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:
    [email]x_goose_x@hotmail.com[/email]
*/

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

modalWin "";
function 
xShowModalDialogsURLvArgumentssFeatures )
    {
    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 sURLvArgumentssFeatures );
        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:

Code:

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

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

Code:

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:

Code:

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



All times are GMT +1. The time now is 07:11 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.