Hi,
bitte probiert mal folgendes aus:
{window.htm} <CUT> <html>
<head> <title>Window</title> <script language="javascript" src="window.js"></script> </head>
<body> <script language="javascript"> <!-- var myWindowClose=true; var mainWindow=myWindowNew("Window",myWindowClose,true,"","",false,false); --> </script> test <script language="javascript"> <!-- myWindowEnd(mainWindow); --> </script> <script language="javascript"> <!-- var myWindowClose=true; var mainWindow=myWindowNew("Window2",myWindowClose,true,"","",false,false); --> </script> test <script language="javascript"> <!-- myWindowEnd(mainWindow); --> </script> </body>
</html> </CUT>
{window.js} <CUT>
// Variablen initialisieren var myWindows=new Array();// Fenster var myWindow="";// Aktuelle Fenster ID (als Buffer beim Bewegen des Fensters) var myWindowsColorBorder="silver";// Rahmenfarbe var myWindowsColorTitleback="blue";// Titelfarbe var myWindowsColorTitlefont="white";// Titelschriftfarbe var myWindowsColorWorkspaceback="white";// Hintergrundfarbe der Arbeitsfläche var myWindowsColorWorkspacefont="black";// Hintergrundfarbe der Arbeitsfläche var myWindowsColorBar="silver";// Hintergrundfarbe der Menubar und der Statusbar var myWindowsColorBarfont="black";// Schriftfarbe in der Statusbar var myWindowsTitlefont="Tahoma";// Schriftart für die Titelleiste var myWindowsTitlefontSize="15";// Schriftgröße der Titelleite in Pixel (px)
// Neues Fenster öffnen function myWindowNew(title,close,minmax,closefnc,icon,menubar,statusbar){ // Fensterdaten initialisieren myWindow=myWindows.length; myWindows[myWindow]=new Array(); myWindows[myWindow][0]=title;// Fenstertitel myWindows[myWindow][1]=close;// Schließen-Button? myWindows[myWindow][2]=0;// Status // Status: // 0 = Normal // 1 = Maximiert // 2 = Minimiert (von normal) // 3 = Minimiert (von maximiert) // 9 = Geschlossen myWindows[myWindow][5]=closefnc;// Externe Schließen-Funktion myWindows[myWindow][6]=menubar;// Menubar? myWindows[myWindow][7]=statusbar;// Statusbar? // Fenster-Code generieren document.writeln('<div id="myWindow'+myWindow+'" style="position:relative" onClick="this.style.zIndex=999;">'); document.writeln('<table border="0" cellpadding="0" cellspacing="0" id="myWindowTable'+myWindow+'" style="border:3px solid '+myWindowsColorBorder+' double">'); document.writeln('<tr height="20" onMousedown="myWindowMoveBegin('+myWindow+');" onMouseup="myWindowMoveEnd('+myWindow+');" onMousemove="myWindowMove('+myWindow+');" onMouseout="myWindowMoveEnd('+myWindow+');">'); document.writeln('<td style="background-color:'+myWindowsColorTitleback+';border-bottom:3px solid '+myWindowsColorBorder+' double;cursor:default" onDblClick="myWindowMax('+myWindow+');" id="myWindowTitle'+myWindow+'">'); document.writeln('<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>'); if(icon!=""){ // Fenstericon oben links document.writeln('<td align="center" valign="middle" width="20" onClick="myWindowMin('+myWindow+');" style="cursor:pointer"><p><img src="'+icon+'" border="0" width="16" height="16"></p></td>'); } document.writeln('<td style="padding:3px;font-family:'+myWindowsTitlefont+';font-size:'+myWindowsTitlefontSize+'px;color:'+myWindowsColorTitlefont+'"><p><b>'+title+'</b></p></td>'); if(minmax){ // Minimieren / Maximieren Button document.writeln('<td align="center" valign="middle" width="20" onClick="myWindowMin('+myWindow+');" style="cursor:pointer;font-family:webdings;color:'+myWindowsColorTitlefont+'"><p>0</p></td>'); document.writeln('<td align="center" valign="middle" width="20" onClick="myWindowMax('+myWindow+');" style="cursor:pointer;font-family:webdings;color:'+myWindowsColorTitlefont+'"><div id="myWindow'+myWindow+'Re" style="display:inline"><p>1</p></div></td>'); } if(close){ // Close Button document.writeln('<td align="center" valign="middle" width="20" onClick="myWindowHide('+myWindow+');" style="cursor:pointer;font-family:webdings;color:'+myWindowsColorTitlefont+'"><p>r</p></td>'); } document.writeln('</tr></table></td>'); document.writeln('</tr>'); if(menubar){ // Menubar document.writeln('<tr height="20" id="myWindowMenubarArea'+myWindow+'" style="background-color:'+myWindowsColorBar+'"><td nowrap><div id="myWindowMenubar'+myWindow+'" style="display:inline;width:100%;height:100%">'); document.writeln('</div></td></tr>'); } // Arbeitsbereich beginnen document.writeln('<tr id="myWindowWorkspace'+myWindow+'">'); document.writeln('<td style="background-color:'+myWindowsColorWorkspaceback+';color:'+myWindowsColorWorkspacefont+'" valign="top"><div style="width:100%;height:100%;overflow:scroll;padding:10px">'); // Fenster ID zurückgeben return myWindow; }
// Fenster abschließen function myWindowEnd(windowId){ // Arbeitsbereich abschließen document.writeln('</div></td>'); document.writeln('</tr>'); if(myWindows[windowId][7]){ // Statusbar document.writeln('<tr id="myWindowStatusbarArea'+windowId+'" height="20" style="background-color:'+myWindowsColorBar+';border-top:3px solid '+myWindowsColorBorder+' double"><td nowrap><div id="myWindowStatusbar'+myWindow+'" style="display:inline;width:100%;height:100%;color:'+myWindowsColorBarfont+'">'); document.writeln('</div></td></tr>'); } // Fenstercode abschließen document.writeln('</table>'); document.writeln('</div>'); // Fensterbreite und -höhe merken / speichern myWindows[myWindow][3]=document.getElementById('myWindow'+myWindow).style.width;// Fensterbreite myWindows[myWindow][4]=document.getElementById('myWindow'+myWindow).style.height;// Fensterhöhe myWindows[myWindow][8]=document.getElementById('myWindow'+myWindow).style.width;// Originale Fensterbreite myWindows[myWindow][9]=document.getElementById('myWindow'+myWindow).style.height;// Originale Fensterhöhe myWindow=""; }
// Fenster maximieren / wiederherstellen function myWindowMax(windowId){ if(myWindows[windowId][2]==0){ // Fenster auf Maximum document.getElementById('myWindow'+windowId).style.left=0; document.getElementById('myWindow'+windowId).style.top=0; document.getElementById('myWindowTable'+windowId).style.width='100%'; document.getElementById('myWindowTable'+windowId).style.height='100%'; if(myWindows[windowId][2]==2||myWindows[windowId][2]==3){ // Arbeitsbereich anzeigen document.getElementById('myWindowWorkspace'+windowId).style.display="inline"; } // Status setzen und Button ändern myWindows[windowId][2]=1; document.getElementById('myWindow'+windowId+'Re').innerHTML="<p>2</p>"; }else{ // Fenster wiederherstellen myWindowRe(windowId); } }
// Fenster minimieren function myWindowMin(windowId){ // Fensterbereiche ausblenden document.getElementById('myWindowWorkspace'+windowId).style.display="none"; if(myWindows[windowId][6]){ document.getElementById('myWindowMenubarArea'+windowId).style.display="none"; } if(myWindows[windowId][7]){ document.getElementById('myWindowStatusbarArea'+windowId).style.display="none"; } // Fenstergröße merken myWindows[windowId][3]=document.getElementById('myWindowTable'+windowId).style.width; myWindows[windowId][4]=document.getElementById('myWindowTable'+windowId).style.height; // Fenstergröße auf Minimum document.getElementById('myWindowTable'+windowId).style.width=0; document.getElementById('myWindowTable'+windowId).style.height=0; // Status setzen und Button ändern document.getElementById('myWindow'+windowId+'Re').innerHTML="<p>2</p>"; if(myWindows[windowId][2]==0){ myWindows[windowId][2]=2; }else{ myWindows[windowId][2]=3; } }
// Fenster wiederherstellen function myWindowRe(windowId){ // Fenstergröße wiederherstellen document.getElementById('myWindowTable'+windowId).style.width=myWindows[windowId][3]; document.getElementById('myWindowTable'+windowId).style.height=myWindows[windowId][4]; if(myWindows[windowId][2]==2){ // Normale Fenstergröße wiederherstellen document.getElementById('myWindowTable'+windowId).style.width=myWindows[windowId][8]; document.getElementById('myWindowTable'+windowId).style.height=myWindows[windowId][9]; // Fensterbereiche einblenden document.getElementById('myWindowWorkspace'+windowId).style.display="inline"; if(myWindows[windowId][6]){ document.getElementById('myWindowMenubarArea'+windowId).style.display="inline"; } if(myWindows[windowId][7]){ document.getElementById('myWindowStatusbarArea'+windowId).style.display="inline"; } // Status setzen und Button ändern document.getElementById('myWindow'+windowId+'Re').innerHTML="<p>1</p>"; myWindows[windowId][2]=0; }else if(myWindows[windowId][2]==3){ // Letzte Fenstergröße wiederherstellen document.getElementById('myWindowTable'+windowId).style.width=myWindows[windowId][3]; document.getElementById('myWindowTable'+windowId).style.height=myWindows[windowId][4]; // Fensterbereiche einblenden document.getElementById('myWindowWorkspace'+windowId).style.display="inline"; if(myWindows[windowId][6]){ document.getElementById('myWindowMenubarArea'+windowId).style.display="inline"; } if(myWindows[windowId][7]){ document.getElementById('myWindowStatusbarArea'+windowId).style.display="inline"; } // Status setzen myWindows[windowId][2]=1; }else{ // Normale Fenstergröße wiederherstellen document.getElementById('myWindowTable'+windowId).style.width=myWindows[windowId][8]; document.getElementById('myWindowTable'+windowId).style.height=myWindows[windowId][9]; // Status setzen und Button ändern document.getElementById('myWindow'+windowId+'Re').innerHTML="<p>1</p>"; myWindows[windowId][2]=0; } }
// Fenster schließen function myWindowHide(windowId){ // Fenster ausblenden document.getElementById('myWindow'+windowId).style.display="none"; // Status setzen myWindows[windowId][2]=9; if(myWindows[windowId][5]!=""){ // Externe Close-Funktion aufrufen eval(myWindows[windowId][5]); } }
// Fenster bewegen function myWindowMove(windowId){ if(myWindow==''+windowId+''){ // Fenster verschieben und Cursor ändern document.getElementById('myWindow'+windowId).style.left=event.clientX-32; document.getElementById('myWindow'+windowId).style.top=event.clientY-32; document.getElementById('myWindowTitle'+windowId).style.cursor="move"; } } function myWindowMoveBegin(windowId){ if(myWindows[windowId][2]==0||myWindows[windowId][2]==2){ // Fenster ID in den Buffer schreiben myWindow=windowId; // Cursor ändern document.getElementById('myWindowTitle'+windowId).style.cursor="move"; } } function myWindowMoveEnd(windowId){ // Fenster ID aus Buffer löschen myWindow=""; // Cursor auf Standardcursor ändern document.getElementById('myWindowTitle'+windowId).style.cursor="default"; }
// Fensterstatus ändern function myWindowStatus(windowId,text){ if(myWindows[windowId][6]){ // Statustext setzen document.getElementById('myWindowStatusbar'+windowId).innerHTML=text; } }
function t(text){ window.status=text; } </CUT>
Einfach diese beiden Dateien in ein Verzeichnis legen und die window.htm im M$IE öffnen. Nun sollten zwei Fenster zu sehen sein: Eins mit dem Titel "Window" und eins mit "Window2". Die Fenster kann man minimieren, maximieren, schließen und bewegen. Mit "Window" klappt das auch prima, aber bei "Window2" bekomme ich es einfach nicht hin, dass sich das Fenster so verschieben lässt, wie "Window" - obwohl es mit dem gleichen JavaScript-Code generiert wurde.
Hat vielleicht jemand eine Ahnung, wo der Fehler liegt? Ich blicke da nicht mehr durch... Für mich sieht das alles richtig aus - ist allerdings selbst geschrieben, vielleicht sehe ich ja den Wald vor lauter Bäumen nicht mehr...
Gruß nd