1. Herfried K. Wagner’s VB.Any
  2. Web
  3. Artikel

Tips zu JavaScript

Kurzfassung

Hier werden einige Tips zur Programmierung in JavaScript angegeben, die häufig Anwendung finden.

Ermitteln des Browsernamens

Da die Browser Netscape und Microsoft Internet Explorer JavaScripts und andere Objekte, wie beispielsweise Layer unterschiedlich interpretieren, ist es manchmal notwendig, am Anfang des Skripts zu ermitteln, welcher Browser verwendet wird. Dazu gibt es zwei übliche Möglichkeiten:

document.layers und document.all

ns = (document.layers) ? 1 : 0
ie = (document.all) ? 1 : 0

if (ns) {
  /* Ereignis bei Netscape. */
} else if (ie) {
  /* Ereignis bei Microsoft Internet Explorer. */
} else {
  /* Anderer Browser. */
}

Browsernamencheck

Weiters kann der Name des Browsers ermittelt werden und anschliessend ein Vergleich durchgeführt werden.

if (navigator.appName == "Netscape") {
  /* Ereignis bei Netscape. */
} else {
  /* Ereignis bei Microsoft Internet Explorer bzw. anderen Browsern. */
}

Durch Erweiterung des oben angegebenen Codes kann auch die Version des Browsers ermittelt werden, um Prozeduren Browser- und Versions-spezifisch auszuführen.

Codekommentare bei JavaScript

In JavaScript stehen Ihnen zum Kennzeichnen von Codekommentaren zwei Möglichkeiten zur Verfügung.

Beispiel 1

function optInit() {
  
  /* Ermitteln des Passworts und Kontrolle. */
  var password = prompt("Bitte Namen eingeben.", "");
  
  /* In folgender Prozedur wird getestet, ob der Benutzername
     registriert ist. */
  if (password == "Peter") {
    alert('Private Begrüssung von Peter.');
    location = "./peter.html";
  } else {
    /* Unbekannt. */ alert(
      'Es ist kein Name ' + password + ' registriert.'
    );
    location = "./unknownuser.html";   /* "Benutzer unbekannt"-Seite anzeigen. */
  }
}

Hier wird der Kommentar zwischen /*...*/ gestellt. So ist es möglich, auch längere, mehrzeilige Kommentare zu definieren.

Beispiel 2

function optInit() {
  
  // Passwort ermitteln.
  var password =
    prompt(
      "Bitte Namen eingeben.", ""
    )
  ; // Namen in Variable setzen.
  .
  .
  .
  // Unbekannt. // alert(
    'Es ist kein Name ' + password + ' registriert.'
  );
}

In diesem Beispiel wird der Kommentar nach zwei Schrägstriche // geschrieben. Dadurch wird die gesamte Codezeile nach den beiden Schrägstrichen auskommentiert. Es bleibt Ihnen überlassen, ob Sie nach // oder /* direkt weiterschreiben oder ein Leerzeichen freilassen.

Ändern der Imagemap eines Bildes

Manchmal ist es notwendig, einem Bild eine andere Imagemap zuzuweisen. Verwenden Sie dazu folgenden Code (useMap: vor den Namen der der Imagemap muss ein Gatterzeichen „#“ gestellt werden). Die ID des Bildes ist nav, der Name der Imagemap ist map2:

nav.useMap = "#map2";

Framebreaker

Frames sind ein gutes Mittel zur logischen Strukturierung von Inhalten. Ab und zu will man unterbinden, dass eine Seite ausserhalb ihres Frame-Kontexts angezeigt wird. Dazu bietet sich folgendes JavaScript an, das im Kopfbereich der HTML-Datei abgelegt werden kann:

if (parent.frames.length > 0)
  parent.location.href = './home.html';

Startseite setzen und zu Favoriten hinzufügen

Der folgende Code stellt zwei Funktionen bereit, mit denen einerseits die aktuelle Seite als Startseite des Browsers gesetzt werden kann und es andererseits möglich ist, die Seite den Favoriten hinzuzufügen:

var browser = navigator.appName;
var version = navigator.appVersion.substring(0, 1);
var ie =
  ((browser == "Microsoft Internet Explorer") &&
  (version >= 4))
;
var ns =
  ((browser == "Netscape") &&
  (version >= 4 && version < 5))
;

function setHomePage(siteURL) {
  if (ie) {
    document.body.style.behavior = "url(#default#homepage)";
    document.body.setHomePage(siteURL);
  } else
    alert(
      "Die Seite konnte nicht automatisch als " +
      "Startseite eingestellt werden, tun Sie " +
      "dies bitte manuell!"
    );
}

function addToFavorites(siteURL, description) {
  if (ie)
    window.external.AddFavorite(siteURL, description);
  else if (ns)
    alert("Drücken Sie Strg+D zum Bookmarken dieser Seite!");
  else
    alert(
      "Die Seite kann nicht automatisch den " +
      "Favoriten hinzugefügt werden!"
    );
}