it:javascript-01a:06

Erste SeiteVorherige SeiteNächste SeiteLetzte Seite

Die zeilenweise Abarbeitung und Ausführung des Programms erlaubt den Zugriff auf ein Seitenelement, das zu diesem Zeitpunkt noch nicht existiert. In →js_1004a.html soll die Anweisung:

document.getElementById("block").innerHTML = "Das Dokument ist geladen.";

den Absatz block beschreiben, der erst mit dem erzeugten <body>-Bereich existiert. Was noch nicht da ist, steht zur Nutzung nicht bereit. In der Folge kommt es zu einem Fehler bei der Darstellung der Seite, in der Umgangssprache Laufzeitfehler genannt: der Fehler tritt auf, wenn die Seite läuft. Eine mögliche Reaktion des Browsers besteht darin, den Fehler zu ignorieren und eine leere Seite zu zeigen.

Das ist ungefähr so, als wenn du dich setzen willst und dein Diener dir noch nicht den Stuhl unter deinen Hintern geschoben hat. Du hast doch einen Diener, oder? Jedenfalls würde die Ansprache dann ungefähr wie folgt lauten:

  • James, ist der Stuhl bereit?
  • Sir, der Stuhl befindet sich unter Ihrer rückseitigen Peripherie und ist bereit, Ihnen eine Last abnehmen zu dürfen.
  • Danke, James. Dann geruhe ich, Platz zu nehmen.

Irgendwann sind die guten Manieren abhanden gekommen. Statt höflicher Umgangsformen sind nun Abkürzungen angesagt:

  • James, der Stuhl!
  • Steht bereit.
  • OK!

Vermutlich waren es die Nachkommen des alten Adels, die für die heutige Umgangssprache verantwortlich zeichnet. Gemeint sind jene Vertreter der gesellschaftlichen Kistenklasse, die als IT-Experten kryptischen Kokolores produzieren. Früher hatte der Adel Brief und Siegel, heute sitzt er vor Computer genannten Kisten. Die Evolution hat der Menschheit nicht nur Gutes gebracht. Und wenn du nicht verstehst, was hier steht: macht nix. Erstens ist es egal und zweitens geht es dem Rest der Menschheit ähnlich, sag einfach nur "Ja". So machen es fast alle.

Und so entstanden Formulierungen wie folgt:

James.Stuhl = setzen {
 Raum.sucheTisch("1").Innenseite = "Platz nehmen!";
}

Was übersetzt bedeutet: James, wenn der Stuhl an der Innenseite von Tisch 1 bereit steht, möchte ich Platz nehmen.

Dieser Code ist zwar merkwürdig zu lesen, ergibt aber Sinn. Raum.sucheTisch("1").Innenseite = "Platz nehmen!" ist eine Hierarchie (Rangordnung) mit einer eindeutigen Beschreibung des Ortes (Raum.Tisch1.Innenseite) mit einer eindeutigen Zuordnung (Platz nehmen). Der Punkt trennt die einzelnen Mitglieder der Hierarchie. Angaben wie die Tischnummer werden in runde Klammern und Anführungszeichen gesetzt. Abgeschlossen ist die Anweisung mit einem Semikolon, dann weiß jeder: jetzt ist Sense mit dieser Anweisung. Falls erforderlich, ist eine weitere Anweisung in der folgenden Zeile notiert. Und damit James weiß, wann er wieder gehen kann, werden alle Anweisungen in geschweifte Klammern {} gesetzt.

Außerdem: betrachte das Leben mal aus Sicht eines Computers. Wenn du nur 0 und 1 unterscheiden könntest, wärest du auch über jede Vereinfachung froh.

Trotz aller Erklärungsversuche wirst du in der Spezies der Seltsamen immer wieder Verweigerer treffen. Jene, die sich einer höherer Einsicht sperren. Denen kommst du nur mit Marketing bei. Marketing ist das Zauberwort für alle, die nicht viel zu sagen haben, dafür aber ziemlich lange brauchen. Marketing steht für schöne Worthülsen ohne Inhalt. So kam ein Manager auf die Idee, ein eher langweiliges Ereignis wie das Platz nehmen als Event zu verkaufen, das mit einer Location verbunden ist. Das ist zwar Bullshit, aber alle machen da mit. Und so wurde der Begriff des Event-Handlers erfunden. In diesem Fall ist das Neudeutsch für Platzanweiser.

⇓→js_1004a.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <title>Event-Handler</title>
    <script>
      document.getElementById("block").innerHTML = "Das Dokument ist geladen.";
    </script>
  </head>
  <body>
    <p id="block"></p>
  </body>
</html>

Das Hindernis mit dem noch nicht vorhandenen Absatz, der beschrieben werden soll, ist mit einem Event-Handler umgangen: ist das Fenster (die Seite) geladen, kommt die im Handler notierte Anweisung zur Ausführung.

window.onload = function() {
};

Dieser Event-Handler ist als Funktion implementiert, mit deren Anweisung(en) zwischen den geschweiften Klammern {}.

Hinweis Implementiert ist der häufig benutzte Ausdruck in der Informationstechnik (IT), wie etwas konstruiert ist. In einem Auto ist die Funktion(alität) der Richtungsänderung durch ein Lenkrad implementiert. Das sagt in der PS-Branche keiner, weil es zu geknödelt wirkt. Außerdem kannst du ein Lenkrad anfassen. Versuch das mal mit einem Event-Handler.

Hinweis Die Funktion der Funktion oder von der Schwierigkeit, Begriffe korrekt zu nutzen. Im allgemeinen Sprachgebrauch ist eine Funktion ein Synonym für Zweck. In der IT ist Funktion eine Möglichkeit, Code zweckgebunden auszuführen. Eine andere ist die Methode. Funktionen und Methoden erfüllen in der Programmierung unterschiedliche Aufgaben. In dieser Dokumentation bezeichnet der Begriff Funktion die in der Programmierung verwendete Definition.

Allgemein prüft ein Event-Handler, ob ein Ereignis statt gefunden hat und handelt entsprechend.

⇓→js_1004b.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <title>Event-Handler</title>
    <script>
      window.onload = function() {
      document.getElementById("block").innerHTML = "Das Dokument ist geladen.";
      };
    </script>
  </head>
  <body>
    <p id="block"></p>
  </body>
</html>

→JS1004b: Der Event-Handler erkennt die geladene Seite und kann den Absatz beschreiben. (Chrome)

Der Event-Handler löst ein Problem trotzdem nicht, dass in Chrome (Version 62) auftritt. Die Anweisung

alert("Ok");

in →js_1004c.html öffnet einen Dialog, der das vollständige Laden der Seite verhindert.

⇓→js_1004c.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <title>Event-Handler</title>
    <script>
      window.onload = function() {
      document.getElementById("block").innerHTML = "Das Dokument ist geladen.";
      alert("Ok");
      };
    </script>
  </head>
  <body>
    <p id="block"></p>
  </body>
</html>

→JS1004c: Trotz des Event-Handlers verhindert der Dialog in Chrome die korrekte Darstellung.

Firefox (Version 57) stellt die Seite korrekt dar.

Erste SeiteVorherige SeiteNächste SeiteLetzte Seite

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • it/javascript-01a/06.txt
  • Zuletzt geändert: 2019/04/03 15:07
  • (Externe Bearbeitung)