# layers

layers: Allgemeines zur Verwendung

### Eigenschaften:

above (oberhalb liegender Layer)
background (Hintergrundbild eines Layers)
bgColor (Hintergrundfarbe eines Layers)
below (unterhalb liegender Layer)
clip (Anzeigebereich eines Layers)
document (document-Objekt eines Layers)
left (Links-Wert der linken oberen Ecke relativ)
length (Anzahl Layer)
name (Name eines Layers)
pageX (Links-Wert der linken oberen Ecke absolut)
pageY (Oben-Wert der linken oberen Ecke absolut)
parentLayer (Objekt des Eltern-Layers)
siblingAbove (Objekt des oberhalb liegenden Layers)
siblingBelow (Objekt des unterhalb liegenden Layers)
src (Externe Datei eines Layers)
top (Oben-Wert der linken oberen Ecke relativ)
visibility (Sichtbarkeit eines Layers)
zIndex (Schichtposition eines Layers)

### Methoden:

captureEvents() (Ereignisse überwachen)
handleEvent() (Ereignisse behandeln)
load() (externe Datei laden)
moveAbove() (über einen anderen Layer legen)
moveBelow() (unter einen anderen Layer legen)
moveBy() (bewegen um Anzahl Pixel)
moveTo() (bewegen zu Position relativ)
moveToAbsolute() (bewegen zu Position absolut)
releaseEvents() (Ereignisüberwachung beenden)
resizeBy() (Breite und Höhe verändern um Anzahl Pixel)
resizeTo() (Breite und Höhe auf Anzahl Pixel setzen)
routeEvent() (Event-Handler-Hierarchie durchlaufen)

## layers: Allgemeines zur Verwendung

Mit dem Objekt `layers`, das in der JavaScript-Objekthierarchie unterhalb des document-Objekts liegt, haben Sie Zugriff auf alle Layer, die in einer HTML-Datei definiert sind. Dieses Objekt ist - ebenso wie die entsprechenden HTML-Tags - Netscape-4-spezifisch. Es ist die Grundlage für Dynamisches Positionieren bei Netscape 4.x (dort finden Sie auch weitere Beispiele).

### Wichtig:

Das `layers`-Objekt wird von Netscape ab Version 6.0 nicht mehr unterstützt. Es sollte also nur noch aus Gründen der Rückwärtskompatibilität zu Netscape 4.x Verwendung finden, da kein einziger moderner Browser dieses Objekt interpretiert.

### Mit dem layers-Objekt arbeiten:

Ein neues Layer-Objekt wird automatisch erzeugt, wenn der Web-Browser einen Layer in der HTML-Datei vorfindet.

Es stehen folgende Arten zur Verfügung, mit JavaScript einen bestimmten Layer anzusprechen:

### Schema 1 / Beispiel 1:

    document.layers[#].Eigenschaft
    document.layers[#].Methode()

    Farbe = document.layers[0].bgColor;

### Schema 2 / Beispiel 2:

    document.layers.Layername.Eigenschaft
    document.layers.Layername.Methode()

    Farbe = document.layers.Kopfbereich.bgColor;

### Schema 3 / Beispiel 3:

    document.layers["Layername"].Eigenschaft
    document.layers["Layername"].Methode()

    Farbe = document.layers["Kopfbereich"].bgColor;

### Schema 4 / Beispiel 4:

    document.LayerName.Eigenschaft
    document.LayerName.Methode()

    Farbe = document.Kopfbereich.bgColor;

### Erläuterung:

Layer können Sie auf zwei Arten ansprechen:

- mit einer Indexnummer (wie in Schema 1 / Beispiel 1)
  Bei Verwendung von Indexnummern geben Sie `document.layers` an und dahinter in eckigen Klammern, den wie vielten Layer in der Datei Sie meinen. Jeder Layer, die in HTML mit dem `<layer>`-Tag oder mit dem `<ilayer>`-Tag notiert wurde, zählt. Beachten Sie, dass der Zähler bei 0 beginnt, d.h. den ersten Layer sprechen Sie mit `layers[0]` an, den zweiten mit `layers[1]` usw. Beim Zählen gilt die Reihenfolge, in der die `<layer>`/`<ilayer>`-Tags in der Datei notiert sind.
- mit dem Namen des Layers (wie in Schema 2 / Beispiel 2)
  Dabei wird der Layer als Unterobjekt von `document.layers` angesprochen. Notieren Sie `document.layers`, dahinter einen Punkt zum Ansprechen des Unterobjekts und schließlich den Namen, den Sie bei der Definition des Layers im einleitenden `<layer>`/`<ilayer>`-Tag im Attribut `name` angegeben haben.
- mit dem Namen des Layers als Indexnamen (wie in Schema 3 / Beispiel 3)
  Diese Art ist eine zu Schema 2 äquivalente Schreibweise, denn in JavaScript ist das Ansprechen von Unterobjekten über `objekt.unterobjekt` gleichwertig zu `objekt["unterobjekt"]`. Dabei geben Sie wie beim Ansprechen mit Indexnummer hinter `document.layers` eckige Klammern. Innerhalb der eckigen Klammern notieren Sie in Anführungszeichen den Namen, den Sie bei der Definition des Layers im einleitenden `<layer>`/`<ilayer>`-Tag im Attribut `name` angegeben haben. Diese Schreibweise ist vor allem zum Zugriff auf Layer nützlich, deren Namen Sonderzeichen enthalten, welche den Zugriff nach Schema 2 unmöglich machen. Sie können zwischen den eckigen Klammern auch eine String-Variable notieren, die den Layernamen enthält.
- mit dem Namen des Layers direkt (wie in Schema 4 / Beispiel 4)
  Dabei geben Sie mit `document.LayerName` den Namen an, den Sie bei der Definition der Grafik im einleitenden `<layer>`/`<ilayer>`-Tag im Attribut `name` angegeben haben.

## above

Speichert, welcher andere Layer über einem Layer liegt. Die Eigenschaft `above` liefert das Layer-Objekt des darüberliegenden Layers zurück. Sie müssen also noch eine Eigenschaft wie `name` anhängen, um mehr über den Layer zu erfahren.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="GelberLayer" top="100" left="50" height="200" bgcolor="#FFFFE0">
    Inhalt des gelben Layers
    </layer>
    <layer top="150" name="LilaLayer" left="100" height="200" bgcolor="#FFE0FF">
    Inhalt des lila Layers
    </layer>
    <a href="javascript:alert(document.GelberLayer.above.name)">
    Wer liegt &uuml;ber dem gelben Layer?</a><br>
    <a href="javascript:alert(document.GelberLayer.above.top)">
    Und wo beginnt er?</a><br>
    </body></html>

### Erläuterung:

Im Beispiel werden zwei Layer mit den Namen `GelberLayer` und `LilaLayer` definiert. Außerdem sind zwei Verweise notiert. Der eine Verweis meldet beim Anklicken den Namen des Layers, der über dem gelben Layer liegt (`document.GelberLayer.above.name`), der andere Verweis dessen Position von oben (`document.GelberLayer.above.top`). Über dem gelben Layer liegt der lila Layer, da dieser in der Datei nach dem gelben Layer definiert wird.

## background

Speichert das Hintergrundbild (Wallpaper) eines Layers. Das folgende Beispiel zeigt, wie Sie ein solches Hintergrundbild dynamisch ändern können.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    var Neubild = new Image();
    Neubild.src = "back02.gif";
    function Hintergrund () {
      document.TestLayer.background.src = "back02.gif";
    }
    </script>
    </head><body>
    <layer background="back03.gif" top="150" name="TestLayer"
    left="100" height="200" bgcolor="#FFE0FF">
    Inhalt des Layers
    </layer>
    <a href="javascript:Hintergrund()">Anderer Hintergrund</a>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer mit einem Hintergrundbild definiert. Beim Klick auf den Verweis wird das Hintergrundbild dynamisch durch ein anderes ersetzt. Beachten Sie, dass dazu in dem Script-Bereich im Dateikopf bereits beim Einlesen der Datei mit Hilfe des images-Objekts die Hintergrundgrafik registriert wird, die die andere dynamisch ersetzen soll.
Beim Klick auf den Verweis wird die Funktion `Hintergrund()` aufgerufen, die das Hintergrundbild dynamisch ändert. Hinter der Adressierung des Layers müssen Sie dabei `background.src` notieren und diesem Ausdruck die zuvor registrierte Grafik zuweisen.

## bgColor

Speichert die Hintergrundfarbe eines Layers.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    var Farbe = "aqua";
    function Hintergrund () {
      if (document.TestLayer.bgColor == "aqua") {
        document.TestLayer.bgColor = "yellow";
        return;
      } else {
        document.TestLayer.bgColor = "aqua";
        return;
      }
    }
    </script>
    </head><body>
    <layer top="150" name="TestLayer" left="100" height="200" bgcolor="aqua">
    Inhalt des Layers
    </layer>
    <a href="javascript:Hintergrund()">Anderer Hintergrund</a>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert. Beim Klick auf den Verweis wird die Funktion `Hintergrund()` aufgerufen, die im Dateikopf in einem Script-Bereich notiert ist. Diese Funktion fragt ab, welche Hintergrundfarbe der Layer gerade hat, und weist dementsprechend eine andere zu.

### Beachten Sie:

Sie können die Hintergrundfarbe eines Layers nicht abfragen, da Netscape 4 merkwürdige bgColor-Werte zurücklieferte, die nicht in das von Netscape dokumentierte Schema (hexadezimale Angabe oder Farbname) passen.

## below

Speichert, welcher andere Layer unter einem Layer liegt. Die Eigenschaft `below` liefert das Layer-Objekt des darunterliegenden Layers zurück. Sie müssen also noch eine Eigenschaft wie `name` anhängen, um mehr über den Layer zu erfahren.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="GelberLayer" top="100" left="50" height="200" bgcolor="#FFFFE0">
    Inhalt des gelben Layers
    </layer>
    <layer top="150" name="LilaLayer" left="100"
    height="200" bgcolor="#FFE0FF">
    Inhalt des lila Layers
    </layer>
    <a href="javascript:alert(document.LilaLayer.below.name)">Wer liegt unter dem lila Layer?</a><br>
    <a href="javascript:alert(document.LilaLayer.below.left)">Und wo beginnt er?</a><br>
    </body></html>

### Erläuterung:

Im Beispiel werden zwei Layer mit den Namen `GelberLayer` und `LilaLayer` definiert. Außerdem sind zwei Verweise notiert. Der eine Verweis meldet beim Anklicken den Namen des Layers, der unter dem lila Layer liegt (`document.LilaLayer.below.name`), der andere Verweis dessen Position von links (`document.GelberLayer.below.left`). Unter dem lila Layer liegt der gelbe Layer, da in der Datei zuerst der gelbe und danach der lila Layer definiert wird.

## clip

Speichert, welcher Ausschnitt eines Layers angezeigt wird. Dabei gibt es folgende Untereigenschaften:
`clip.top` speichert den Pixelwert oben der linken oberen Ecke des sichtbaren Layer-Bereichs,
`clip.left` speichert den Pixelwert links der linken oberen Ecke des sichtbaren Layer-Bereichs,
`clip.bottom` speichert den Pixelwert unten der rechten unteren Ecke des sichtbaren Layer-Bereichs,
`clip.right` speichert den Pixelwert rechts der rechten unteren Ecke des sichtbaren Layer-Bereichs,
`clip.width` speichert die Breite des sichtbaren Layer-Bereichs (alternative Angabe zur Angabe einer rechten unteren Ecke),
`clip.height` speichert die Höhe des sichtbaren Layer-Bereichs (alternative Angabe zur Angabe einer rechten unteren Ecke).

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function MachKleiner () {
      with (document.MeinLayer) {
        if (clip.height > 0 && clip.width > 0) {
          clip.height -= 10;
          clip.width -= 10;
        }
      }
    }
    function MachGroesser () {
      with (document.MeinLayer) {
        if (clip.height < 200 && clip.width < 200) {
          clip.height += 10;
          clip.width += 10;
        }
      }
    }
    </script>
    </head><body>
    <layer name="MeinLayer" top="80" left="80" height="200" width="200" bgcolor="#FFFFE0">
    Inhalt des Layers
    </layer>
    <a href="javascript:MachKleiner()">Kleiner</a><br>
    <a href="javascript:MachGroesser()">Groesser</a>
    </body></html>

### Erläuterung:

Im Beispiel ist ein Layer definiert. Da innerhalb der HTML-Definition keine Angaben zum clip-Bereich des Layers gemacht werden, wird der gesamte Layer angezeigt. Seine clip-Werte ergeben sich aus der Größe des Layers. Intern sind also `clip.top` und `clip.left` gleich 0, und `clip.width`, `clip.height`, `clip.bottom` und `clip.right` haben alle den Wert 200, weil sich dies aus den Angaben height=200 width=200 in der HTML-Definition des Layers ergibt.
Mit Hilfe von zwei Verweisen lässt sich im Beispiel der sichtbare Anzeigebereich des Layers verkleinern und wieder vergrößern. Die Verweise rufen die Funktionen `MachKleiner()` bzw. `MachGroesser()` auf, die in einem Script-Bereich im Dateikopf notiert sind. Die Funktion `MachKleiner()` fragt ab, ob `clip.width` und `clip.height` größer 0 sind. Wenn ja, werden beide Werte um 10 verringert, wodurch der Anzeigebereich des Layers von rechts unten um 10 Pixel beschnitten wird. Die Funktion `MachGroesser()` tut einfach das Umgekehrte.

## document

Jeder Layer wird von Netscape wie ein eigenes kleines Dokument behandelt. Deshalb gibt es für Layer auch ein `document`-Objekt, das genauso funktioniert wie das globale document-Objekt. Dadurch haben Sie Zugriff auf Dokument-Unterobjekte wie Grafiken, Formulare usw. Um solche Elemente innerhalb eines Layers anzusprechen, müssen Sie die Elemente über das Layer-eigene `document`-Objekt ansprechen.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function AndererInhalt () {
      document.MeinLayer.document.open();
      document.MeinLayer.document.write("Jetzt ist der Verweis weg!");
      document.MeinLayer.document.close();
    }
    </script>
    </head><body>
    <layer name="MeinLayer" bgcolor="#FFFFE0">
    <a href="javascript:AndererInhalt()">Diesen Verweis ueberschreiben</a>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert, der einen Verweis enthält. Beim Anklicken wird die Funktion `AndererInhalt()` aufgerufen, die in einem Script-Bereich im Dateikopf notiert ist. Diese Funktion benutzt typische Methoden des `document`-Objekts wie `open()`, `write()` und `close()`. Das Besondere ist, dass es sich nicht um das globale Dokument handelt, sondern um das Dokument, das der Layer darstellt. Dies wird durch eine Adressierung wie `document.MeinLayer.document` erreicht.

### Beachten Sie:

Das Dokumentenmodell der Layer im Netscape hat auch Auswirkungen auf im HTML-Dokument definierte Formulare, Grafiken oder Verweise. Berücksichtigen Sie hier, dass alle Elemente, die sich in einem Layer befinden, zum Dokument des Layers gehören und nicht zum HTML-Dokument.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="MeinLayer" bgcolor="#FFFFE0" left="300">
    <img src="blau.gif" width="104" height="102" border="0" alt="">
    </layer>
    <script type="text/javascript">
    document.write("Anzahl der Bilder im HTML-Dokument: " + document.images.length);
    document.write("<br>Anzahl der Bilder im Layer: " + document.MeinLayer.document.images.length);
    </script>
    </body></html>

### Erläuterung:

Im Beispiel wurde ein Layer definiert, der eine Grafik enthält. Weitere Bilder enthält die Datei nicht. Danach folgt ein JavaScript-Bereich der mit der Methode document.write die Anzahl der Bilder im Dokument und im Layer ausgibt. Anhand des Beispieles sehen Sie, dass nur das Dokument des Layers eine Grafik enthält. Mit einer Adressierung wie `document.MeinLayer.document` können Sie diese Grafik ansprechen und z.B. deren Eigenschaft src ändern.

## left

Speichert den Pixelwert für links der linken oberen Ecke eines Layers. Bezug ist dabei das übergeordnete Dokument. Das kann entweder das globale Dokument sein oder ein Layer, innerhalb dessen der aktuelle Layer definiert ist. Für absoluten Bezug siehe pageX.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="SuperLayer" left="100">
      <layer name="Layerchen" left="200" width="300" bgcolor="#FFFFE0">
      <a href="javascript:alert(document.SuperLayer.document.Layerchen.left)">Links-Wert?</a>
      </layer>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer innerhalb eines anderen Layers, beginnend bei Pixelposition 200 von links, mit einem Verweis. Beim Anklicken des Verweises wird der Links-Wert des inneren Layers ausgegeben. Der beträgt 200, obwohl der Layer optisch gesehen bei Position 300 beginnt, weil der übergeordnete Layer ja schon bei 100 beginnt und die 200 des inneren Layers dazu addiert wird.

## length

Speichert die Anzahl der Layer in einer Datei.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer></layer>
    <layer></layer>
    <layer></layer>
    <layer></layer>
    <script type="text/javascript">
    document.write("Auf dieser Seite gibt es " + document.layers.length + " Layer");
    </script>
    </body></html>

### Erläuterung:

Das Beispiel enthält ein paar Layer zu Testzwecken und schreibt dann mit document.write() die Anzahl der definierten Layer in die Datei.

## name

Speichert den Namen eines Layers.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="Layerchen" bgcolor="#FFFFE0">
    <a href="javascript:alert(document.Layerchen.name)">Wie heisse ich denn?</a>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer mit einem Verweis. Beim Anklicken des Verweises wird der Name des Layers in einem Meldungsfenster ausgegeben. Es ist derjenige Name, der in HTML bei dem Attribut `name` angegeben ist.

## pageX

Speichert den Pixelwert für links der linken oberen Ecke eines Layers. Bezug ist dabei das globale Dokument, auch wenn der aktuelle Layer innerhalb eines anderen Layers definiert ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function NachLinks () {
      document.Layerchen.pageX = 0;
    }
    </script>
    </head><body>
    <layer name="Layerchen" left="300" width="300" bgcolor="#FFFFE0">
    <a href="javascript:NachLinks()">Nach links mit diesem Layer</a>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer, beginnend bei Pixelposition 300 von links, mit einem Verweis. Beim Anklicken des Verweises wird die Funktion `NachLinks()` aufgerufen, die im Dateikopf in einem Script-Bereich notiert ist. Diese Funktion ändert den Links-Wert des Layers auf 0, sodass der Layer anschließend ganz links beginnt.

## pageY

Speichert den Pixelwert für oben der linken oberen Ecke eines Layers. Bezug ist dabei das globale Dokument, auch wenn der aktuelle Layer innerhalb eines anderen Layers definiert ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function NachOben () {
      document.Layerchen.pageY = 0;
    }
    </script>
    </head><body>
    <layer name="Layerchen" top="300" width="300" bgcolor="#FFFFE0">
    <a href="javascript:NachOben()">Nach oben mit diesem Layer</a>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer, beginnend bei Pixelposition 300 von oben, mit einem Verweis. Beim Anklicken des Verweises wird die Funktion `NachOben()` aufgerufen, die im Dateikopf in einem Script-Bereich notiert ist. Diese Funktion ändert den Links-Wert des Layers auf 0, sodass der Layer anschließend ganz links beginnt.

## parentLayer

Speichert das Eltern-Objekt eines Layers. Das kann entweder das window-Objekt sein, oder, falls der Layer innerhalb eines anderen Layers definiert ist, dieser übergeordnete Layer.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="SuperLayer">
      <layer name="Layerchen" bgcolor="#FFFFE0">
      <a href="javascript:alert(document.SuperLayer.document.Layerchen.parentLayer.name)">
         Super-Name?</a>
      </layer>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer innerhalb eines anderen Layers. Beim Anklicken des Verweises im inneren Layer wird der Name des Eltern-Objekts ausgegeben. Da das Elternobjekt in diesem Fall der übergeordnete Layer ist, wird dessen Name, also `SuperLayer`, ausgegeben.

## siblingAbove

Speichert denjenigen Layer, der aufgrund der Schichtposition, die z.B. mit dem Attribut `z-index` in HTML festgelegt wird, über dem angesprochenen Layer liegt. Es handelt sich dabei um ein Layer-Objekt, für das seinerseits alle verfügbaren Eigenschaften und Methoden gelten.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="L1" left="100" top="100" z-index="3" bgcolor="#FFFFE0">Layer-Inhalt L1</layer>
    <layer name="L2" left="120" top="120" z-index="1" bgcolor="#FFFFD0">Layer-Inhalt L2</layer>
    <layer name="L3" left="140" top="140" z-index="4" bgcolor="#FFFFC0">Layer-Inhalt L3</layer>
    <layer name="L4" left="140" top="140" z-index="2" bgcolor="#FFFFB0">Layer-Inhalt L4</layer>
    <layer name="L5" left="100" top="180">
    <a href="javascript:alert(document.L1.siblingAbove.name)">L1 siblingAbove</a><br>
    <a href="javascript:alert(document.L2.siblingAbove.name)">L2 siblingAbove</a><br>
    <a href="javascript:alert(document.L3.siblingAbove.name)">L3 siblingAbove</a><br>
    <a href="javascript:alert(document.L4.siblingAbove.name)">L4 siblingAbove</a><br>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel definiert insgesamt fünf Layer. Der zuletzt definierte Layer enthält vier Verweise. Jeder Verweis gibt für einen der ersten vier Layer den Namen desjenigen Layers aus, der aufgrund der `z-index`-Ordnung über dem angesprochenen Layer liegt. Klickt man beispielsweise auf den ersten Verweis, wird für den Layer mit dem Namen L1 der Name des Layers ausgegeben, der darüber liegt. Das ist in dem Fall der Layer mit dem Namen L3, da der Layer L1 den z-index-Wert 3 hat und der Layer L3 den nächsthöheren z-index-Wert, nämlich 4.

## siblingBelow

Speichert denjenigen Layer, der aufgrund der Schichtposition, die z.B. mit dem Attribut `z-index` in HTML festgelegt wird, unter dem angesprochenen Layer liegt. Es handelt sich dabei um ein Layer-Objekt, für das seinerseits alle verfügbaren Eigenschaften und Methoden gelten.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="L1" left="100" top="180">
    <a href="javascript:alert(document.L2.siblingBelow.name)">L2 siblingBelow</a><br>
    <a href="javascript:alert(document.L3.siblingBelow.name)">L3 siblingBelow</a><br>
    <a href="javascript:alert(document.L4.siblingBelow.name)">L4 siblingBelow</a><br>
    <a href="javascript:alert(document.L5.siblingBelow.name)">L5 siblingBelow</a><br>
    </layer>
    <layer name="L2" left="100" top="100" z-index="3" bgcolor="#FFFFE0">Layer-Inhalt L2</layer>
    <layer name="L3" left="120" top="120" z-index="1" bgcolor="#FFFFD0">Layer-Inhalt L3</layer>
    <layer name="L4" left="140" top="140" z-index="4" bgcolor="#FFFFC0">Layer-Inhalt L4</layer>
    <layer name="L5" left="140" top="140" z-index="2" bgcolor="#FFFFB0">Layer-Inhalt L5</layer>
    </body></html>

### Erläuterung:

Das Beispiel definiert insgesamt fünf Layer. Der erste Layer enthält vier Verweise. Jeder Verweis gibt für einen der folgenden vier Layer den Namen desjenigen Layers aus, der aufgrund der `z-index`-Ordnung unter dem angesprochenen Layer liegt. Klickt man beispielsweise auf den ersten Verweis, wird für den Layer mit dem Namen L2 der Name des Layers ausgegeben, der darunter liegt. Das ist in dem Fall der Layer mit dem Namen L5, da der Layer L1 den z-index-Wert 3 hat und der Layer L2 den nächstniedrigeren z-index-Wert, nämlich 2.

## src

Speichert die externe Datei, die in einen Layer eingebunden ist.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="extern" left="50" top="30" width="600" height="200" src="news.htm">
    </layer>
    <layer left="50" top="250">
    <script type="text/javascript">
    document.write("<hr><b>Eingebunden wurde die Datei: <\/b>" + window.document.extern.src);
    </script>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält zwei positionierte Layer. Der Inhalt des ersten Layers ist eine externe Datei namens `news.htm`. Im zweiten Layer wird mit Hilfe von document.write() die genaue Adresse der externen Datei in den Layer-Bereich geschrieben. Beachten Sie, dass in diesem Fall `window.document.extern.src` zur Adressierung des anderen Layers verwendet werden muss, da `document.extern.src` sich sonst nur auf den aktuellen Layer beziehen würde und dieser kein Element namens `extern` enthält.

## top

Speichert den Pixelwert für oben der linken oberen Ecke eines Layers. Bezug ist dabei das übergeordnete Dokument. Das kann entweder das globale Dokument sein oder ein Layer, innerhalb dessen der aktuelle Layer definiert ist. Für absoluten Bezug siehe pageY.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="SuperLayer" top="100">
      <layer name="Layerchen" top="200" width="300" bgcolor="#FFFFE0">
      <a href="javascript:alert(document.SuperLayer.document.Layerchen.top)">Oben-Wert?</a>
      </layer>
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen Layer innerhalb eines anderen Layers, beginnend bei Pixelposition 200 von oben, mit einem Verweis. Beim Anklicken des Verweises wird der Oben-Wert des inneren Layers ausgegeben. Der beträgt 200, obwohl der Layer optisch gesehen bei Position 300 beginnt, weil der übergeordnete Layer ja schon bei 100 beginnt und die 200 des inneren Layers dazu addiert wird.

## visibility

Speichert, ob bzw. dass ein Layer sichtbar ist oder nicht.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function EinAus (Nummer) {
      if (window.document.layers[Nummer].visibility == "show") {
        window.document.layers[Nummer].visibility = "hide";
        return;
      }
      if (window.document.layers[Nummer].visibility == "hide") {
        window.document.layers[Nummer].visibility = "show";
        return;
      }
    }
    </script>
    </head><body>
    <layer name="GelberLayer" left="50" top="30" width="200" height="200"
     visibility="show" bgcolor="#FFFFE0">
    <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
    </layer>
    <layer name="LilaLayer" left="250" top="30" width="200" height="200"
     visibility="show" bgcolor="#FFE0FF">
    <a href="javascript:EinAus(0)">anderer Layer ein/aus</a>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel werden zwei positionierte Layer definiert. Jeder der beiden Layer enthält einen Verweis, bei dessen Anklicken der jeweils andere Layer aus- und wieder eingeblendet wird. Dazu wird jeweils die Funktion `EinAus()` aufgerufen, die im Dateikopf notiert ist. Als Parameter wird die Indexnummer des jeweils anderen Layers übergeben. Die Eigenschaft visibility kann die drei Werte `hide` (verstecken), `show` (anzeigen) und `inherit` (wie vom Eltern-Layer vererbt) haben.

## zIndex

Speichert die Schichtposition eines Layers.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer z-index="527" name="EinLayer">
    <a href="javascript:alert(window.document.EinLayer.zIndex)">z-index?</a>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert, der per HTML-Attribut einen z-index-Wert von 527 erhält. Innerhalb des Layers ist ein Verweis notiert. Beim Anklicken des Verweises wird der z-Index-Wert des Layers in einem Meldungsfenster ausgegeben.

## captureEvents()

Überwacht Anwenderereignisse in einem Layer. Funktioniert genau so wie captureEvents() beim window-Objekt (nähere Informationen siehe dort). Der einzige Unterschied ist, dass Sie mit `window.document.Layer-Name.caputeEvents()` nur Ereignisse innerhalb des Layer-Bereichs überwachen können, keine Ereignisse im gesamten Fensterbereich (zu dem beispielsweise auch Titelleiste, Menüleisten usw. gehören).

## handleEvent()

Übergibt ein Ereignis an ein Element, das in der Lage ist, auf das Ereignis zu reagieren. Funktioniert genau so wie handleEvent() beim window-Objekt (nähere Informationen siehe dort). Der einzige Unterschied ist, dass `window.document.Layer-Name.handleEvent()` nur Ereignisse übergeben kann, die mit window.document.Layer-Name.captureEvents() überwacht werden.

## load()

Lädt eine externe Datei in einen Layer. Erwartet zwei Parameter:
1. Quelle = Eine (HTML)-Datei, die geladen werden soll.
2. Breite = Anzeigebreite des Layers.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function Laden () {
      document.EinLayer.load("news.htm", 600);
    }
    </script>
    </head><body>
    <a href="javascript:Laden()">News laden</a>
    <layer name="EinLayer" top="50" left="20">
    </layer>
    </body></html>

### Erläuterung:

Das Beispiel enthält einen leeren Layer und einen Verweis. Beim Anklicken des Verweises wird die Funktion `Laden()` aufgerufen, die im Dateikopf notiert ist. Die Anweisung innerhalb der Funktion wendet die Methode `load()` auf den bis dahin leeren Layer an. Die angegebene Datei `news.htm` wird in den Layer geladen, und der Layer erhält eine Anzeigebreite von 600 Pixeln.

## moveAbove()

Legt einen Layer über einen anderen Layer. Erwartet als Parameter den Layer, der überdeckt werden soll. Die Schichtposition des veränderten Layers ändert sich dabei abhängig von der des Layers, der überdeckt werden soll. Diese Methode hat nichts mit dem Bewegen von Layern zu tun.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="GelberLayer" top="150" left="100" width="200" height="200" bgColor="#FFFFE0">
    Gelber Layer<br>
    <a href="javascript:window.document.GelberLayer.moveAbove(window.document.LilaLayer)">
    nach vorne</a>
    </layer>
    <layer name="LilaLayer" top="50" left="250" width="200" height="200" bgColor="#FFE0FF">
    Lila Layer<br>
    <a href="javascript:window.document.LilaLayer.moveAbove(window.document.GelberLayer)">
    nach vorne</a>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel werden zwei positionierte Layer definiert, die sich zum Teil überlappen. Beide enthalten jeweils einen Verweis, um den eigenen Layer über den anderen zu legen.

## moveBelow()

Legt einen Layer unter einen anderen Layer. Erwartet als Parameter den Layer, der den aktuellen überdecken soll. Die Schichtposition des veränderten Layers ändert sich dabei abhängig von der des Layers, der den aktuellen Layer überdecken soll. Diese Methode hat nichts mit dem Bewegen von Layern zu tun.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    </head><body>
    <layer name="GelberLayer" top="150" left="100" width="200" height="200" bgColor="#FFFFE0">
    Gelber Layer<br>
    <a href="javascript:window.document.GelberLayer.moveBelow(window.document.LilaLayer)">
    nach hinten</a>
    </layer>
    <layer name="LilaLayer" top="50" left="250" width="200" height="200" bgColor="#FFE0FF">
    Lila Layer<br>
    <a href="javascript:window.document.LilaLayer.moveBelow(window.document.GelberLayer)">
    nach hinten</a>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel werden zwei positionierte Layer definiert, die sich zum Teil überlappen. Beide enthalten jeweils einen Verweis, um den eigenen Layer von dem jeweils anderen überdecken zu lassen.

## moveBy()

Verschiebt einen Layer um so viele Pixel wie angegeben. Erwartet folgende Parameter:
1. x-Wert = um wie viele Pixel der Layer nach links/rechts verschoben werden soll. Negative Werte verschieben nach links, positive nach rechts.
2. y-Wert = um wie viele Pixel der Layer nach oben/unten verschoben werden soll. Negative Werte verschieben nach oben, positive nach unten.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function Springen () {
      var x = parseInt(document.Springer.document.Eingabe.hr.value);
      var y = parseInt(document.Springer.document.Eingabe.vr.value);
      document.Springer.moveBy(x, y);
    }
    </script>
    </head><body>
    <layer name="Springer" top="150" left="100" width="200" height="200" bgColor="#FFFFE0">
    <form name="Eingabe" action="">
    Springe um <input type="text" size="5" name="hr"> Pixel horizontal<br>
    Springe um <input type="text" size="5" name="vr"> Pixel vertikal<br>
    <input type="button" value="Springe" onclick="Springen()">
    </form>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert, der ein Formular enthält. Das Formular stellt zwei kleine Eingabefelder bereit, in denen der Anwender eingeben kann, um wie viele Pixel der Layer horizontal und vertikal verschoben werden soll. Beim Anklicken des Buttons, der auch zu dem Formular gehört, wird die Funktion `Springen()` aufgerufen, die im Dateikopf notiert ist. Diese Funktion ermittelt zunächst die eingegebenen Werte. Da es sich um Zeichenketten handelt, die Methode `moveBy()` aber Zahlen erwartet, wird die Funktion parseInt() zum Umwandeln der Formulareingaben in eine Zahl angewendet. Anschließend wendet die Funktion die Methode `moveBy()` mit den ermittelten Werten auf den Layer an.

## moveTo()

Verschiebt einen Layer auf die anzugebende Position. Erwartet folgende Parameter:
1. x-Wert = Links-Wert für die neue obere linke Ecke des Fensters.
2. y-Wert = Oben-Wert für die neue obere linke Ecke des Fensters.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function Springen () {
      var x = parseInt(document.Springer.document.Eingabe.hr.value);
      var y = parseInt(document.Springer.document.Eingabe.vr.value);
      document.Springer.moveTo(x, y);
    }
    </script>
    </head><body>
    <layer name="Springer" top="150" left="100" width="200" height="200" bgColor="#FFFFE0">
    <form name="Eingabe" action="">
    links oben neu: <input type="text" size="5" name="hr"> (von links)<br>
    links oben neu: <input type="text" size="5" name="vr"> (von oben)<br>
    <input type="button" value="Springe" onclick="Springen()">
    </form>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert, der ein Formular enthält. Das Formular stellt zwei kleine Eingabefelder bereit, in denen der Anwender die x- und y-Werte der neuen gewünschten oberen linken Ecke des Layers eingeben kann. Beim Anklicken des Buttons, der auch zu dem Formular gehört, wird die Funktion `Springen()` aufgerufen, die im Dateikopf notiert ist. Diese Funktion ermittelt zunächst die eingegebenen Werte. Da es sich um Zeichenketten handelt, die Methode `moveTo()` aber Zahlen erwartet, wird die Funktion parseInt() zum Umwandeln der Formulareingaben in eine Zahl angewendet. Anschließend wendet die Funktion die Methode `moveTo()` mit den ermittelten Werten auf den Layer an.

### Beachten Sie:

Wenn sich der Layer, auf den Sie die `moveTo()`-Methode anwenden, innerhalb eines anderen Layers befindet, beziehen sich die Angaben relativ zu dem äußeren Layer. Eine Angabe wie `moveTo(0,0)` springt also zur linken oberen Ecke des äußeren Layers.

## moveToAbsolute()

Funktioniert genauso wie moveTo(), mit dem Unterschied, dass die x- und y-Werte absolut zum Anzeigefenster interpretiert werden, falls sich der Layer innerhalb eines anderen Layers befindet.

## releaseEvents()

Beendet die Überwachung von Anwenderereignissen. Funktioniert genau so wie releaseEvents() beim window-Objekt (nähere Informationen siehe dort). Der einzige Unterschied ist, dass `document.Layer-Name.releaseEvent()` nur Ereignisüberwachungen beenden kann, die mit document.Layer-Name.captureEvents() gestartet wurden.

## resizeBy()

Verändert die Größe eines Layers um so viele Pixel unten und rechts wie angegeben. Erwartet folgende Parameter:
1. x-Wert = um wie viele Pixel der Layer rechts verkleinert/vergrößert werden soll. Negative Werte verkleinern, positive vergrößern.
2. y-Wert = um wie viele Pixel der Layer unten verkleinert/vergrößert werden soll. Negative Werte verkleinern, positive vergrößern.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function MachKleiner () {
      document.MeinLayer.resizeBy(-20, -10);
    }

    function MachGroesser () {
      document.MeinLayer.resizeBy(20, 10);
    }
    </script>
    </head><body>
    <layer name="MeinLayer" top="50" left="50" width="200" height="100" bgColor="#FFFFE0">
    <a href="javascript:MachKleiner()">Kleiner</a><br>
    <a href="javascript:MachGroesser()">Groesser</a><br>
    </layer>
    </body></html>

### Erläuterung:

Im Beispiel ist ein Layer definiert. Mit Hilfe von zwei Verweisen lässt sich im Beispiel der sichtbare Anzeigebereich des Layers verkleinern und wieder vergrößern. Die Verweise rufen die Funktionen `MachKleiner()` bzw. `MachGroesser()` auf, die in einem Script-Bereich im Dateikopf notiert sind.
Die Funktion `MachKleiner()` verringert die Breite des Layers um 20 Pixel und die Höhe um 10 Pixel, die Funktion `MachGroesser()` tut das Umgekehrte.

## resizeTo()

Legt die Breite und Höhe eines Layers neu fest. Erwartet folgende Parameter:
1. x-Wert = neue Breite des Layers.
2. y-Wert = neue Höhe des Layers.

### Beispiel:

Anzeigebeispiel: So sieht's aus

    <html><head><title>Test</title>
    <script type="text/javascript">
    function Aendern () {
      var x = parseInt(document.L.document.Eingabe.hr.value);
      var y = parseInt(document.L.document.Eingabe.vr.value);
      document.L.resizeTo(x, y);
    }
    </script>
    </head><body>
    <layer name="L" top="50" left="50" width="200" height="200" bgColor="#FFFFE0">
    <form name="Eingabe" action="">
    neue <input type="text" size="5" name="hr"> Breite<br>
    neue <input type="text" size="5" name="vr"> Hoehe<br>
    <input type="button" value="Aendern" onclick="Aendern()">
    </form>
    </body></html>

### Erläuterung:

Im Beispiel wird ein Layer definiert, der ein Formular enthält. Das Formular stellt zwei kleine Eingabefelder bereit, in denen der Anwender die x- und y-Werte der neuen gewünschten Breite und Höhe des Layers eingeben kann. Beim Anklicken des Buttons, der auch zu dem Formular gehört, wird die Funktion `Aendern()` aufgerufen, die im Dateikopf notiert ist. Diese Funktion ermittelt zunächst die eingegebenen Werte. Da es sich um Zeichenketten handelt, die Methode `resizeTo()` aber Zahlen erwartet, wird die Funktion parseInt() zum Umwandeln der Formulareingaben in eine Zahl angewendet. Anschließend wendet die Funktion die Methode `resizeTo()` mit den ermittelten Werten auf den Layer an.

## routeEvent()

Übergibt ein Anwenderereignis an das document-Objekt. Von dort aus wird das Ereignis immer weiter nach unten durchgereicht, bis sich ein Event-Handler findet, der das Ereignis verarbeitet. Funktioniert genau so wie routeEvent() beim window-Objekt (nähere Informationen siehe dort). Der einzige Unterschied ist, dass `document.Layer-Name.routeEvent()` nicht auf Fensterebene ansetzt, sondern auf Layerebene.

| links
| embeds

© 2007 Impressum