1. Was ist Modaldialog?
ShowModaldialog ist eine Methode von Jswindow -Objekt.
Der Unterschied ist: Nachdem der Showmodaldialog geöffnet wurde, kann das übergeordnete Fenster nicht den Fokus erhalten (dh es kann nicht betrieben werden).
Sie können den Wert des Fensters festlegen.
2. Ein Beispiel
1) main.html im Hauptfenster,,
2) Öffnen Sie das Sub -Window Sub.html im Hauptfenster über Showmodaldialog
3) ReturnValue im Sub -Window einstellen und zum Verwendung zum Hauptfenster zurückkehren, um sie zu verwenden
main.html
Kopieren Sie den Code -Code wie folgt:
<html>
<kopf>
<Medaname = "generator" content = "oscar999">
</Head>
<Script>
FunktionshowModal ()
{{{{
varret = window.showmodaldialog ("sub.html? temp ="+math.random ());
Alert ("subReturnValueis"+ret);
}
</script>
<body>
<InputID = button1Type = buttonValue = "openSub" name = button1onclick = "showModal ();" >>
</Body>
</Html>
sub.html
Kopieren Sie den Code -Code wie folgt:
<html>
<kopf>
<Medaname = "generator" content = "oscar999">
</Head>
<Script>
FunktionReturnMain ()
{{{{
window.returnValue = "returnFromsub";
Fenster.CLOSE ();
}
</script>
<body>
<InputID = button1Type = buttonValue = "returnandclose" name = button1onclick = "returnMain ()">
</Body>
</Html>
Besondere Erklärung: Wenn die Methode des Showmodaldialog in main.html verwendet wird, besteht der Zweck der Verwendung von Mathematik. Random (), um Cache zu vermeiden.
3.Showmodaldialog im Detail
vreturnValue = window.showModaldialog (Surl [, Vargumente] [, SFeatures])))
Surl
MUSS -CHLOSE -Parameter, Typ: String. Die URL wurde verwendet, um das Dokument im Dialogfeld anzugeben.
Vargumente
Optionale Parameter, Typ: Variante. Wird verwendet, um Parameter an das Dialogfeld zu übergeben. Der von übergebene Parametertyp ist nicht begrenzt, einschließlich Array usw. Das Dialogfeld erhält Parameter, die durch Fenster übergeben wurden. Dialogargumente.
Sfeatures
Optionale Parameter, Typ: String. Verwendet, um das Erscheinungsbild und andere Informationen des Dialogfelds zu beschreiben, können Sie eine oder mehrere unten verwenden und das Segment verwenden.
Das DialogHeight -Dialogfeldhöhe, nicht weniger als 100px, Dialogheight und Dialogwidth in IE4, sind EM, und IE5 ist PX.
Dialogwidth: Dialogfeld Breite.
Dialogleft: Entfernung von links vom Desktop.
Dialogtop: Entfernung vom Desktop.
Mitte: {Ja |.
Hilfe: {Ja |.
Resizier: {Ja |. Die Standardnummer.
Status: {Ja |. Die Standardeinstellung ist Ja [modlos] oder nein [Modal].
Scroll: {Ja | Der Standard ist ja.
In HTA werden mehrere Attribute verwendet, die im Allgemeinen nicht auf allgemeinen Webseiten verwendet werden.
Dialoghide: {Ja | Der Standard ist nein.
REDE: {gesunken |. Der Standard ist erhöht.
Uneduled: {Ja |
4. Browserkompatibilität
Aber nicht alle Browser sind mit dieser Verwendung kompatibel.
Wenn Sie das obige Beispiel in Chrome ausführen, kann das übergeordnete Fenster den Fokus nach Belieben erhalten.
Das Folgende ist die Unterstützung der Mainstream -Browser dieser Methode.
Browser | Ob sie unterstützen | Zustand |
Dh9 | ○ | |
Firefox13.0 | ○ | |
Safari5.1 | ○ | |
Chrome19.0 | × | Es ist kein modales Dialogfeld, aber Öffnen hat ein neues Fenster |
Opera12.0 | × | Alles passierte, nicht einmal ein Fenster |
Wenn es einen Parameter gibt, der in Vargumenten in das Fenster eingeführt wird:
Kopieren Sie den Code -Code wie folgt:
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), Fenster);
Im Sub -Window lautet der folgende Wert:
Browser | Modal Dialog | window.opner | Fenster.Dialogargumente | ReturnValue |
Dh9 | ○ | undefiniert | [Objektfenster] | ○ |
Firefox13.0 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Safari5.1 | ○ | [ObjectWindow] | [ObjectWindow] | ○ |
Chrome19.0 | × | [ObjectWindow] | undefiniert | × |
Beachten Sie, dass unter dem Firefox -Browser, wenn der Unterwindow aktualisiert wird, immer noch verloren gehen. In den obigen Ergebnissen können wir feststellen, dass der Rückgabewert der Rückgabewert ist, dass nur der Chrom -Browser undefinierter Rückgabebereich und es keine Probleme mit anderen Browsern gibt.
5. wie man die Kompatibilität von Chrom lösen.
Die Richtung lautet: Set window.opner.returnValue = "" ""
main.html
Kopieren Sie den Code -Code wie folgt:
<html>
<kopf>
<Meta name = "allgemeine" content = "oscar999">
</Head>
<Script>
Funktion showmodal ()
{{{{
var return = window.showmodaldialog ("sub.html? temp ="+math.random (), Fenster);
// für Chrome
if (ret == undefiniert)
{{{{
Ret = fenster.returnValue;
}
Alert ("Sub -Return -Wert ist"+ret);
}
</script>
<body>
<Input id = button1 type = button value = "sub" name = button1 onclick = "showModal ();" >>
</Body>
</Html>
sub.html
Kopieren Sie den Code -Code wie folgt:
<html>
<kopf>
<Meta name = "allgemeine" content = "oscar999">
</Head>
<Script>
Funktion returnMain ()
{{{{
if (window.opner! = undefiniert)
{{{{
Window.opner.returnValue = "Rückkehr aus Sub";
} Anders {
Fenster.ReturnValue = "Rückkehr aus Sub";
}
Fenster.CLOSE ();
}
</script>
<body>
<Eingabe id = button1 type = button value = "return und schließen" name = button1 onclick = "returnMain ()">
</Body>
</Html>
Dies soll bestimmen, ob bestimmte Objekte definiert sind, um Browser zu unterscheiden. Natürlich können Sie auch die Art des Browsertyps beurteilen
Dies wird verwendet, um das Rückkehrwert des übergeordneten Fensters zu verwenden.
Var oldValue = window.returnValue;
var newValue = showmodaldialog ()
Fenster.ReturnValue = OldValue
6. Es ist zu beachten, dass der Test unter Chrome die HTML -Datei in den Webserver (Tomcat, ...) einfügen muss, um auf den Test unter der HTTP -URL zuzugreifen. Andernfalls wird es nicht erfolgreich sein.