Fenster minimieren
timmy
- javascript
Hallo,
Gibt es eine möglichkeit mit JavaScript, dass ein Fenster ein zweites Fenster minimiert und bei bedarf es wieder maximiert?
Das "Tochterfenster" muss das "Mutterfenster" minimieren und maximieren.
Ich bin dabei auf folgende möglichkeiten gekommen:
focus() - Fenster Aktivieren?
javascript:void(window.resizeTo(600,125));
Gibt es eine möglichkeit das Fenster ganz zu minimieren?
hi,
Gibt es eine möglichkeit mit JavaScript, dass ein Fenster ein zweites Fenster minimiert und bei bedarf es wieder maximiert?
Nein.
(Nur in den Hintergrund/Vordergrund bekommst du es eventuell über die Methoden blur/focus.)
gruß,
wahsaga
Hallo,
(Nur in den Hintergrund/Vordergrund bekommst du es eventuell über die Methoden blur/focus.)
gut, dass du "eventuell" sagst, denn blur() allein, wie es oft vorgeschlagen wird, hilft leider noch nicht.
Mit blur() gibt ein Fenster zwar den Focus ab, aber zumindest unter Windows wird der Focus dabei nicht an das nächte Fenster in der z-Ordnung weitergegeben, sondern es gibt plötzlich einen Zustand, in dem _kein_ Fenster focussiert ist (Titelleiste aller Fenster ist grau, oder was auch immer den inaktiven Zustand kennzeichnet).
Da kein anderes Fenster focussiert wird, sieht Windows auch keinen Grund, die z-Ordnung neu zu sortieren. Folge: Das ge-"blur"-te Fenster bleibt, obwohl inaktiv, weiter im Vordergrund.
Man muss also tatsächlich gezielt ein anderes Fenster mit focus() ins Rampenlicht holen - allerdings kann man dann auch wieder auf das vorherige blur() verzichten. (Wozu taugt die Methode überhaupt?)
Ciao,
Martin
Nein.
(Nur in den Hintergrund/Vordergrund bekommst du es eventuell über die Methoden blur/focus.)
Mist!
Oder gibt es eine Möglichkeit zu überprüfen ob ein Fenster schon geschlossen wurde?
Der Sinn dahinter ist: Wenn ein Pop Up aufgeht, soll sich das Hauptfenster minimieren (oder Resize, so dass nur noch der status balken zu sehen ist) und wenn das Pop Up sich wieder schliesst (schliesst sich selber) sollte das Hauptfenster wieder gross werden!
Mist!
Oder gibt es eine Möglichkeit zu überprüfen ob ein Fenster schon geschlossen wurde?
ja, die eigenschaft heißt .closed steht auch in selfhtml.
Der Sinn dahinter ist: Wenn ein Pop Up aufgeht, soll sich das Hauptfenster minimieren (oder Resize, so dass nur noch der status balken zu sehen ist) und wenn das Pop Up sich wieder schliesst (schliesst sich selber) sollte das Hauptfenster wieder gross werden!
Das geht nicht oder nur mit Tricks die heutzutage teilweise geblockt werden.
Es gibt .resizeTo() (steht auch in selfhtml) und .moveTo(), wobei du ausprobieren musst was geht. Ein Fenster kann soweit ich weiß nicht kleiner als 100x100 Pixel gemacht werden und auch nicht mehr aus den sichtbaren B ereich weggeschoben. Musste mal probieren.
Struppi.
Hi,
Oder gibt es eine Möglichkeit zu überprüfen ob ein Fenster schon geschlossen wurde?
ja, die eigenschaft heißt .closed steht auch in selfhtml.
ja, die eigenschaft heißt .closed steht auch in selfhtml.
Struppi.
so, das ganze funktioniert nun theoretisch. JEdoch gibt es ein Problem beim "wieder gross machen". Ich denke das liegt in aendernGR(), dass die Variable window nicht stimmt. Wie kann ich dort die Variable auf das eigene Fenster setzen (mit eigen meine ich das fenster wo die funktion drinn steht)? ich habe es schon mit window.self self.window probiert aber irgendwie will der nicht so wie ich *g*
***************************************
function aendernKl() {
void(window.resizeTo(600,50));
window.setTimeout(function() { check();}, 100)
}
function check() {
window1=window.open('check.html', "fenster", "width=300,height=75,left=620,top=475, status=no, toolbar=no, menubar=no, hotkeys=yes, scrollbars=no")
}
function aendernGr() {
var window1 = window.open('check.html', "fenster");
var window = window.open('front.asp', "2fenster");
if (window1.closed == true) {
void(window.resizeTo(600,600));
} else {
window.setTimeout(function() { aendernGr();}, 500)
}
}
gruss, timmy
so, das ganze funktioniert nun theoretisch. JEdoch gibt es ein Problem beim "wieder gross machen". Ich denke das liegt in aendernGR(), dass die Variable window nicht stimmt. Wie kann ich dort die Variable auf das eigene Fenster setzen (mit eigen meine ich das fenster wo die funktion drinn steht)? ich habe es schon mit window.self self.window probiert aber irgendwie will der nicht so wie ich *g*
Probieren ist nicht immer der beste Weg, ich hab den Eindruck du weißt noch nicht so ganz was du da tust.
function aendernKl() {
void(window.resizeTo(600,50));
Wozu void()?
Damit änderst du das Fenster in dem das Skript steht (sofern es zugelassen wird, ich hab das mittlerweile ausgeschaltet, weil es nervig ist wenn das aktuelle Fenster sich in der Größe ändert)
window.setTimeout(function() { check();}, 100)
und rufst in 100 ms die Funktion check() auf
}
function check() {
window1=window.open('check.html', "fenster", "width=300,height=75,left=620,top=475, status=no, toolbar=no, menubar=no, hotkeys=yes, scrollbars=no")
}
Die ein Popup öffnet und eine Globale Variabel window1 erzeugt.
function aendernGr() {
Wann du diese Funktion aufrufst ist jetzt nicht klar.
var window1 = window.open('check.html', "fenster");
hier hast du eine lokale Variabel die nur innerhalb der Funktion gültig ist, mit der du eine Referenz auf das Fenster mit dem Namen "fenster" hast (also evtl. das in check() geöffnete)
var window = window.open('front.asp', "2fenster");
Hier hast du eine lokale Variabel window, diese dürfte mit dem globalen Objekt window in die Quere kommen, woher soll JS Wissen ob du window oder aendernGr.window meinst solnage du das nicht schreibst.
if (window1.closed == true) {
void(window.resizeTo(600,600));
Das void ist hier Unsinn und wie oben schon gesagt änderst du die Fenstergröße des aktuellen Fensters.
Mit ist nicht ganz klar was du erreichen willst.
Struppi.
Also ich erklär mal:
Das ganze ist ein ASP Front End für einen Musik File Konverter.
Der User sieht ein Web Interface (grösse 600*600) wo er verschiedene Angaben machen kann, unter anderem ein File angeben. Wenn er nun auf Start klickt wird das File hochgeladen und in das gewünschte Audio Format konvertiert.
Wenn der Benutzer das Formular abschickt würde zuerst gar nichts passieren. Darum habe ich ein Pop Up eingebaut, welches so lange läuft bis eine bestimmte text datei, welche beim abschicken ebenfalls erstellt wurde nicht mehr existiert (Dieses löscht sich erst, wenn der ganze Vorgang abgeschlossen ist. Hochgeladen & Konvertiert). Dann schliesst es sich selber.
Das Problem ist:
Während des Uploads passiert nichts sichtbares für den Benutzer und wenn der Upload fertig ist kommt ein anderes fenster wo ein link zur Konvertierten Datei ist. Da die Datei aber in dem moment noch nicht existiert oder noch am Konvertieren ist bekommt man nicht die ganze datei.
Darum dachte ich, es wäre gut, wenn sich das Front End minimieren würde, so lange bis eben das Pop up mit einer "Fortschritts Anzeige" (animiertes GIF) NICHT mehr offen ist, resp das file "besetzt.txt" nicht mehr existiert.
Ich hoffe das war jetzt einigermassen verständlich
gruss, timmy
Wenn der Benutzer das Formular abschickt würde zuerst gar nichts passieren. Darum habe ich ein Pop Up eingebaut, welches so lange läuft bis eine bestimmte text datei, welche beim abschicken ebenfalls erstellt wurde nicht mehr existiert (Dieses löscht sich erst, wenn der ganze Vorgang abgeschlossen ist. Hochgeladen & Konvertiert). Dann schliesst es sich selber.
Das geht so nicht. Da musst du tricksen, denn das Skript wird bei einem Upload erst gestartet, wenn die komplette Datei hochgeladen wurde.
Darum dachte ich, es wäre gut, wenn sich das Front End minimieren würde, so lange bis eben das Pop up mit einer "Fortschritts Anzeige" (animiertes GIF) NICHT mehr offen ist, resp das file "besetzt.txt" nicht mehr existiert.
Du könntest parallel eine zweite Aktion starten, die lediglich diese Datei erzeugt.
Ich hoffe das war jetzt einigermassen verständlich
Ja, danke.
Struppi.
Es lauft und funktioniert schon alles.
Es geht eigentlich nur noch darum, dass man die grösse ändern, bzw minimieren kann. Der rest ist Voll Funktionstüchtig. Auch das Pop Up schliesst sich....
gruss, timmy
Es lauft und funktioniert schon alles.
Naja, aber nicht so wie du es schilderst.
Wie schon gesagt bei einem Upload wird erst die Datei vom Server hochgeladen und nachdem diese vollständig hochgeladen wurde, wird das Skript gestartet. D.h. du kannst eigentlich keine Datei vor dem Upload erzeugen, es sei denn du rufst ein 2. Skript parallel auf.
Es geht eigentlich nur noch darum, dass man die grösse ändern, bzw minimieren kann. Der rest ist Voll Funktionstüchtig. Auch das Pop Up schliesst sich....
minimieren geht nicht, die Größe ändern geht mit resizeTo().
Struppi.
Hi,
Naja, aber nicht so wie du es schilderst.
Wie schon gesagt bei einem Upload wird erst die Datei vom Server hochgeladen und nachdem diese vollständig hochgeladen wurde, wird das Skript gestartet. D.h. du kannst eigentlich keine Datei vor dem Upload erzeugen, es sei denn du rufst ein 2. Skript parallel auf.
Das ganze ist nicht mit Java gelöst sondern mit ASP/VBS. ASP/VBS erzeugt vor dem Uploaden diese Datei. JavaScript ist nur dazu da um die Pop Ups zu steuern.
Falls es einfacher verständlich ist kann ich dir auch mal die Datei posten...
minimieren geht nicht, die Größe ändern geht mit resizeTo().
Ja, das weiss ich mitlerweile. Klein Machen funktioniert. Ich kanns nur nicht mehr gross machen und das ist das problem. das klein gemachte fenster wieder gross machen :) und das hier an dieser stelle im Code:
*********************************************
function aendernGr() {
var window1 = window.open('check.html', "fenster");
var window = self.window();
if (window1.closed == true) {
void(window.resizeTo(600,600));
} else {
window.setTimeout(function() { aendernGr();}, 500)
}
}
*********************************************
Der oben gepostet Code fängt an zu laufen, wenn das PopUp (check.html) zu ist. Ich muss eigentlich nur wissen, wie ich das Fenster das wieder gross werden soll definieren kann.
gruss, timmy
Naja, aber nicht so wie du es schilderst.
Wie schon gesagt bei einem Upload wird erst die Datei vom Server hochgeladen und nachdem diese vollständig hochgeladen wurde, wird das Skript gestartet. D.h. du kannst eigentlich keine Datei vor dem Upload erzeugen, es sei denn du rufst ein 2. Skript parallel auf.Das ganze ist nicht mit Java gelöst sondern mit ASP/VBS. ASP/VBS erzeugt vor dem Uploaden diese Datei.
Glaub ich nicht - weiß ich aber nicht. Ich kann mir nicht vorstellen, dass ASP anders als PHP oder Perl reagiert, bzw. geht's wenn überhaupt um den Server.
Aber es ist ja technisch gar nicht möglich, du wählst eine sagen wir mal 5 MB grosse Datei aus und drückst auf absenden, was soll jetzt deiner Meinung nach passieren? Das Skript startet? Unmöglich, da es - je nach Internet Anschluss - ein paar Minuten dauert bis die Datei auf dem Server geladen wurde. Und dann kann das Skript erst gestartet werden, da ansonsten du ja gar nicht auf die Datei zugreifen könntest.
Was natürlich sein kann, dass die Bearbeitung der Datei durch dein Skript eine Weile dauern, das kanst du natürlich so wie du es machst markieren. Aber über das hochladen hast du mit deinem Skript keine Kontrolle, dass ist nach wie vor Aufgabe des Servers bzw. des Browsers.
function aendernGr() {
var window1 = window.open('check.html', "fenster");
var window = self.window();
Wie gesagt hier überschreibst du ein bereits vorhandenenes Objekt. allerdings mit dem gleichen Objekt, also window = window.window = self = self.window = usw
if (window1.closed == true) {
void(window.resizeTo(600,600));
Welches Fenster willst du hier verändern?
Das Hauptfenster? Das geht nur im IE oder wenn es der User zuläßt.
Und dieses void(...) ist überflüssig, nach wie vor
Der oben gepostet Code fängt an zu laufen, wenn das PopUp (check.html) zu ist. Ich muss eigentlich nur wissen, wie ich das Fenster das wieder gross werden soll definieren kann.
Welches Fenster soll denn gross werden?
Das in dem das Skript steht, das heißt window, wenn window.resizeTo() nicht funktioniert und du auch keine Fehlermeldung in der JS Konsole findest, dann hast du die Änderung des aktuellen Fensters abgestellt.
Struppi.