Erst den Stuhl holen, dann setzen

javascript-01a:06 Die zeilenweise Abarbeitung und Ausführung des Programms erlaubt den Zugriff auf ein Seitenelement, das zu diesem Zeitpunkt noch nicht existiert. In js_1004-a.html soll die Anweisung:

document.getElementById("absatz_01").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 Zuweisung (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_1004-a.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Event Handler</title>
    <script>
      document.getElementById("absatz_01").innerHTML = "Das Dokument ist geladen.";
    </script>
  </head>
  <body>
    <p id="absatz_01"></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 Methode onload des Objektes window implementiert, mit einer Zuweisung einer Funktion² und 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. Funktion² en und Methoden erfüllen in der Programmierung unterschiedliche Aufgaben. Bei tolaris know-how 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. <html><a name = "js1004b"></html>

js_1004-b.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Event Handler</title>
    <script>
      window.onload = function() {
        document.getElementById("absatz_01").innerHTML = "Das Dokument ist geladen.";
      }
    </script>
  </head>
  <body>
    <p id="absatz_01"></p>
  </body>
</html>

JS1004b: Der Event Handler wartet auf die fertig geladene Seite und schreibt danach den Text in den Absatz.

Trotz des Event Handlers verhalten sich Chromium, Opera und Firefox in js_1004-c.html unterschiedlich. Die Anweisung

alert("Ok");

wird in js_1004-c.html vor der Anweisung

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

ausgeführt. Chromium öffnet den Dialog, ohne "Das Dokument ist geladen." aus der vorherigen Anweisung in die Seite zu schreiben.

js_1004-c.html
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Event Handler</title>
    <script>
      window.onload = function() {
        document.getElementById("absatz_01").innerHTML = "Das Dokument ist geladen.";
        alert("Ok");
      }
    </script>
  </head>
  <body>
    <p id="absatz_01"></p>
  </body>
</html>

JS1004c: Chromium und Opera bauen die Seite nicht Anweisung für Anweisung auf.

JS1004d: Das Endergebnis ist in diesem Fall in Chromium und Firefox identisch.

Firefox stellt die Seite der Reihenfolge der Anweisungen entsprechend dar.

Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • Zuletzt geändert: 2024/03/27 09:42
  • von wh