Programmcode
Funktion openEgg(type){
window.showModalDialog('../EggPlay.aspx?type='+type,'','dialogHeight: 600px; dialogWidth: 800px; Kante: Erhöht; Mitte: Ja; Hilfe: Nein; veränderbar: Nein; Status: Nein; scroll:Nein;');
}
Javascript verfügt über viele integrierte Methoden zum Generieren von Dialogfeldern, z. B. window.alert(), window.confirm(), window.prompt() usw. Allerdings bietet der IE weitere Methoden zur Unterstützung von Dialogfeldern. Zum Beispiel:
showModalDialog() (unterstützt von IE 4+)
showModelessDialog() (unterstützt von IE 5+)
Mit der Methode window.showModalDialog() wird ein modales Dialogfeld erstellt, das HTML-Inhalte anzeigt. Da es sich um ein Dialogfeld handelt, verfügt es nicht über alle Eigenschaften eines Fensters, das normalerweise mit window.open() geöffnet wird.
Die Methode window.showModelessDialog() wird verwendet, um ein nicht modales Dialogfeld zu erstellen, das HTML-Inhalte anzeigt.
Wenn wir showModelessDialog() verwenden, um ein Fenster zu öffnen, müssen wir window.close() nicht verwenden, um es zu schließen. Wenn es im nichtmodalen Modus [IE5] geöffnet wird, kann das Fenster, das das Dialogfeld öffnet, weiterhin andere Aktionen ausführen Das heißt, das Dialogfeld ist nicht immer geöffnet. Es steht im Vordergrund und wird automatisch geschlossen, wenn sich die URL des Fensters ändert, das es öffnet. Das modale [IE4]-Dialogfeld hat immer den Fokus (der Fokus kann erst entfernt werden, wenn es geschlossen wird). Das modale Dialogfeld ist mit dem Fenster verknüpft, das es geöffnet hat. Wenn wir also ein anderes Fenster öffnen, bleibt die Verknüpfungsbeziehung weiterhin erhalten und wird unter dem aktiven Fenster ausgeblendet.
So verwenden Sie es:
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
Parameterbeschreibung:
sURL
Erforderlicher Parameter, Typ: Zeichenfolge. Wird verwendet, um die URL des Dokuments anzugeben, das im Dialogfeld angezeigt werden soll.
vArgumente
Optionaler Parameter, Typ: Variante. Wird verwendet, um Parameter an das Dialogfeld zu übergeben. Die Art der übergebenen Parameter ist nicht beschränkt, einschließlich Arrays usw. Das Dialogfeld erhält die über window.dialogArguments übergebenen Parameter.
Merkmale
Optionaler Parameter, Typ: Zeichenfolge. Zur Beschreibung des Erscheinungsbilds des Dialogfelds und anderer Informationen können Sie einen oder mehrere der folgenden, durch Semikolons „;“ getrennten Werte verwenden.
dialogHeight ist die Höhe des Dialogfelds, nicht weniger als 100 Pixel. Die Standardeinheit von dialogHeight und dialogWidth in IE4 ist em, während sie in IE5 der Einfachheit halber px als Einheit verwendet.
dialogWidth: Breite des Dialogfelds.
dialogLeft: Abstand von der linken Seite des Desktops.
dialogTop: Abstand vom Desktop.
center: {yes |. no |. 0}: Ob das Fenster zentriert ist, die Standardeinstellung ist ja, aber die Höhe und Breite können weiterhin angegeben werden.
Hilfe: {Ja |. 1 |. 0}: Ob die Hilfeschaltfläche angezeigt werden soll, die Standardeinstellung ist Ja.
veränderbar: {ja |. 1 |. 0} [IE5+]: Ob die Größe geändert werden kann. Der Standardwert ist Nein.
Status: {ja |. 1 |. 0} [IE5+]: Ob die Statusleiste angezeigt werden soll. Der Standardwert ist „yes[Modal]“ oder „no[Modal]“.
scroll:{ ja |. 1 | aus }: Gibt an, ob das Dialogfeld Bildlaufleisten anzeigt. Der Standardwert ist „Ja“.
In HTA werden auch mehrere Attribute verwendet, die in normalen Webseiten im Allgemeinen nicht verwendet werden.
dialogHide:{ ja |. 1 | aus }: Ob das Dialogfeld beim Drucken oder in der Druckvorschau ausgeblendet ist. Der Standardwert ist Nein.
edge:{ versunken |. raise }: Gibt den Rahmenstil des Dialogfelds an. Der Standardwert wird erhöht.
undekoriert:{ ja |. 1 |.
Parameter übergeben:
Um Parameter an das Dialogfeld zu übergeben, werden diese über vArguments übergeben. Für den Typ gibt es keine Begrenzung. Die maximale Länge beträgt 4096 Zeichen. Sie können auch Objekte übergeben, zum Beispiel:
Programmcode
test1.htm
====================
<Skript>
var mxh1 = neues Array("mxh", "net_lover", "Mencius Kapitel E")
var mxh2 = window.open("about:blank","window_mxh")
// Array an Dialogfeld übergeben
window.showModalDialog("test2.htm",mxh1)
// Übergebe das Fensterobjekt an das Dialogfeld
window.showModalDialog("test3.htm",mxh2)
</script>
test2.htm
====================
<Skript>
var a = window.dialogArguments
Alert("Die von Ihnen übergebenen Parameter sind: " + a)
</script>
test3.htm
====================
<Skript>
var a = window.dialogArguments
Alert("Der von Ihnen übergebene Parameter ist ein Fensterobjekt, Name: " + a.name)
</script>
Informationen können über window.returnValue an das Fenster zurückgegeben werden, das das Dialogfeld geöffnet hat, und natürlich kann es sich auch um ein Objekt handeln. Zum Beispiel:
Programmcode
test4.htm
===================
<Skript>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alarm(a[i])
</script>
test5.htm
===================
<Skript>
Funktion sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>
<Körper>
<Formular>
<input value="Return" type=button onclick="sendTo()">
</form>
FAQ:
1. Wie übermittle ich in einem modalen Dialogfeld, ohne ein neues Fenster zu öffnen?
Wenn Ihr Browser IE5.5+ ist, können Sie im Dialogfeld einen Iframe mit einem Namensattribut verwenden und beim Senden das Ziel auf den Namen des Iframes festlegen. Für IE4+ können Sie einen Frame mit einer Höhe von 0 verwenden: Beispiel
Programmcode
test6.htm
===================
<Skript>
window.showModalDialog("test7.htm")
</script>
test7.htm
===================
if(window.location.search) Alert(window.location.search)
<frameset rows="0,*">
<frame src="/blog/about:blank">
<frame src="test8.htm">
</frameset>
test8.htm
===================
<form target="_self" method="get">
<Eingabename=txt value="test">
<Eingabetyp=Senden>
</form>
<Skript>
if(window.location.search) Alert(window.location.search)
</script>
2. Können Parameter über http://servername/virtualdirname/test.htm?name=mxh direkt an das Dialogfeld übergeben werden?
Die Antwort ist nein. Aber im Rahmen ist es möglich.