Alan Hathway: ... ist kein Objekt Fehlermeldung

Hallo Forum!

Bitte nicht schimpfen - die Frage hört sich zeimlich dumm an.

Ich richte Jugend Sport Turniere aus.
Ich benutze ein uraltes PC mit Wondows 95 und Internet Explorer V4.0 in einem Intranet, damit die Teilnehmer, Zuschauer, Trainer, Eltern usw. die Ergebnisse usw. verfolgen können. (Habe kein Geld für bessseres Equipment)

Ich vertecke die Tastatur und starte IE in Kiosk Mode (iexplore -k). Die Leute können mit der Maus rumklicken und versch. Sachen auswählen.

In allen Seiten habe ich zwei Javascript Teile.

  1. um die rechte Maustaste zu sperren (Es ist ein Jugend Turnier! notwendig!)
  2. nach 30 Sekunden von Inaktivität zurück zu einer Hauptseite zu springen.

Funktioniert prinzipiell gut, bis auf folgendes.
Gelegentlich kommt die Fehler Meldung
In diesem Skript auf dieser Seite ist ein Fehler aufgetreten.
Zeile: 33
Zeichen: 5
Fehler: 'document.test.x' ist kein Objekt
Code: 0
Sollen Skripte auf dieser Seite weiter aufgeführt werden?

Diese Meldung kommt aus dem 2. Javascript-Teil.
Die Meldung kommt aber NICHT vor, wenn der 1. Teil (rechte Maustaste sperren) NICHT vorhanden ist.
(oder ich kann es nicht reproduzieren)
Die Meldung ist leicht zu reproduzieren, wenn beide Teile vorhanden sind.
Das würde ich gerne unterbinden.

Ich möchte nur, dass es weiter geht - ohne Fehlermeldung, als ob Ja gedruckt wurde

Bei Internet-Optionen habe ich (u.a.) angekreuzt
Skript debugging deaktivieren
Java Konsole aktiviert
Java JIT Compiler aktiviert

Bin KEIN Expert in Javascript - habe beide Scripts irgendwo her kopiert.

Hier ist eine HTML Datei (bereinigt von fast aller Daten)

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">

<TITLE>htmspiele</TITLE>

<META http-equiv="Pragma" CONTENT="no-cache">
<META http-equiv="expires" CONTENT="0">

<script language="JavaScript"><!--
if (navigator.appName == 'Netscape') {
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = netscapeMouseMove;
}

function doit() {
    timerRunning = false;
    document.location.href="umleitung.html";
}

function netscapeMouseMove(e) {
    if (e.screenX != document.test.x.value && e.screenY != document.test.y.value) {
        if (timerRunning) {
            clearTimeout(myTimer);
            myTimer = setTimeout('doit()',10000);
        }
        document.test.x.value = e.screenX;
        document.test.y.value = e.screenY;
    }
}

function microsoftMouseMove() {
    if (window.event.x != document.test.x.value && window.event.y != document.test.y.value) {
        if (timerRunning) {
            clearTimeout(myTimer);
            myTimer = setTimeout('doit()',10000);
        }
        document.test.x.value = window.event.x;
        document.test.y.value = window.event.y;
    }
}

var myTimer = setTimeout('doit()',10000); // invoke doit() after five seconds of mouse inactivity
var timerRunning = true;
//--></script>
</HEAD>
<BODY  onMousemove="microsoftMouseMove()">

<script type="text/javascript">
<!--
//Dieses Skript stammt von Michael Mailers JavaScripts
//URL: http://www.webaid.de/js  --  eMail: mm@webaid.de
//Bitte   entfernen   Sie   diesen   Vermerk   nicht  !
if (document.layers){
 window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
 window.onmousedown=rightclick;
 windowmouseup=rightclick;

function rightclick(e) {
 if (e.which == 3) {
 alert('Bitte nur die LINKE Maustaste benutzen!');
 return false;
 }
 else {
  return true;
  }
 }
}
if (document.all){
 function click() {
 if (event.button==2) {
 alert('Bitte nur die LINKE Maustaste benutzen!')
 }

if (event.button==3) {
 alert('Bitte nur die LINKE Maustaste benutzen!')}
 }
 document.onmousedown=click
}
// -->
</script>

<form name="test"><input type="hidden" name="x"><input type="hidden" name="y"></form>

<A NAME="Teil1">A</A>
<A NAME="Teil2">B</A>
<A NAME="Teil3">C</A>

</BODY>
</HTML>

  1. use Mosche;

    Ich richte Jugend Sport Turniere aus.
    Ich benutze ein uraltes PC mit Wondows 95 und Internet Explorer V4.0

    Ich habe es nicht vollständig durchgeguckt - allerdings kannst du den Netscape spezifischen Kram rausschmeissen, wenn du es nur mit M$ IE verwendest...

    if (navigator.appName == 'Netscape') {
    ...

    function netscapeMouseMove(e) {
    ...

    use Tschoe qw(Matti);

    1. Hallo

      Danke. Verstehe. Habe ich entfernt. Leider ohne Besserung :-(

      Gibt es anderen Vorschlag?

      Alan Hathway

      1. Hallo nochmals,

        Doch - es kam nur einmal wieder vor.
        (Weil noch etwas in einem Cache war - vielleicht?)

        Jetzt scheint es zu 'funzen' (wie die Jugendliche sagen würden).

        Herzlichen Dank (auch in Namen von 'meinen' Jugendlichen)!

        Alan Hathway

  2. Hallo Alan.

    Bitte nicht schimpfen - die Frage hört sich zeimlich dumm an.

    Eigentlich nicht.

    In allen Seiten habe ich zwei Javascript Teile.

    1. um die rechte Maustaste zu sperren (Es ist ein Jugend Turnier! notwendig!)
    2. nach 30 Sekunden von Inaktivität zurück zu einer Hauptseite zu springen.

    Das Script-Gewusel, was du zusammengetragen hast, ist nicht wirklich zu gebrauchen.

    Das machen wir neu:

    <script type="text/javascript">
    <!--
     tur = 30; // Sekunden, die bis zur Umleitung gewartet werden soll
     ruri = "umleitung.html"; // Adresse, auf die umgeleitet werden soll
     cd = false;
     function mm()
      {
       window.clearTimeout(cd);
       cd = window.setTimeout("window.location.href = ruri",tur*1000);
      }
     function mc()
      {
       if(window.event.button != 1){window.alert("Bitte benutzen sie nur die LINKE Maustaste.")}
      }
     document.onmousemove = mm;
     document.onmousedown = mc;
     document.onmouseup = mc;
    //-->
    </script>

    So, mehr braucht man auch nicht, das ganze andere Zeugs kannst du rauswerfen.
    Wenn du das Script nicht in jeder Seite einzeln einfügen willst, könntest du es in eine externe Datei auslagern. In den Dateien muss du dann lediglich darauf verweisen, wäre dann kürzer.
    Anleitung dazu gibt's hier: http://selfhtml.teamone.de/javascript/intro.htm#javascriptdateien

    Gruß
    Norbert

    1. Hallo Norbert,

      das werde ich in Rühe ausprobieren.

      Danke im voraus

      Alan Hathway

    2. Hallo Norbert (oder jemand anders der helfen kann),

      Dein Javascipt funktioniert wunderbar.
      Aber wie es so ist, kommt immer der Hunger beim Essen.

      Daher habe ich zwei Fragen

      1. Habe nicht gesagt, dass ich Frames benutze.
        Links ist ein Menü und Rechts wird das gezeigt, was im Menü gewählt wurde.
        Hatte bis jetzt nur mein 'Gewusel' (schönes Wort) in den Seiten, die rechts gezeigt werden.  Ich bräuchte, dass wenn es keine Maus-Bewegung gibt, dass im Frame RECHTS eine Start-Seite gezeigt wird.
        Mit

      ruri = "umleitung.html"; // Adresse, auf die umgeleitet werden

      und

      cd = window.setTimeout("window.location.href = ruri",tur*1000);

      wechsele ich den JETZTIGEN Fenster.
      Wie gebe ich den Namen eines Fensters an?
      (Ich habe Selfhtml gelesen  - aber ganze ehrlich ich raffe es nicht)

      1. (aber wirklich unwichtig) Mit dem Teil

      if(window.event.button != 1){window.alert("Bitte benutzen sie nur die LINKE Maustaste.")}

      kommt eine Nachricht, wenn die linke Maustaste betätigt wird.
      Wenn ich es recht überlege, wäre es besser, wenn der Anwender die rechte Maustaste betätigt, so zu tun, als ob die linke Maustaste betätigt wurde. Geht das?

      Danke

      Alan Hathway

      Hallo Alan.

      Das machen wir neu:

      <script type="text/javascript">
      <!--
      tur = 30; // Sekunden, die bis zur Umleitung gewartet werden soll
      ruri = "umleitung.html"; // Adresse, auf die umgeleitet werden soll
      cd = false;
      function mm()
        {
         window.clearTimeout(cd);
         cd = window.setTimeout("window.location.href = ruri",tur*1000);
        }
      function mc()
        {
         if(window.event.button != 1){window.alert("Bitte benutzen sie nur die LINKE Maustaste.")}
        }
      document.onmousemove = mm;
      document.onmousedown = mc;
      document.onmouseup = mc;
      //-->
      </script>

      1. Hallo.

        cd = window.setTimeout("window.location.href = ruri",tur*1000);

        cd = window.setTimeout("parent.NameDesRechtenFrames.location.href = ruri",tur*1000);

        1. (aber wirklich unwichtig) Mit dem Teil

        if(window.event.button != 1){window.alert("Bitte benutzen sie nur die LINKE Maustaste.")}
        kommt eine Nachricht, wenn die linke Maustaste betätigt wird.

        Ähm, nein. Sobald eine andere Taste als der Linken gedrückt wird, kommt der Alert.
        (http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/button.asp)

        Wenn ich es recht überlege, wäre es besser, wenn der Anwender die rechte Maustaste betätigt, so zu tun, als ob die linke Maustaste betätigt wurde. Geht das?

        Also soll der rechte Knopp das machen, was der Linke macht? Hmm, das geht nicht, zumindest nicht mit JavaScript, wär auch im normalen Webgebrauch blöd, da man sicherlich einen Grund hat, die rechte Maustaste zu verwenden. Aber das kannst du (vielleicht) übers Betriebssystem einstellen.

        Gruß
        Norbert

        1. Danke Schön - werde ich probieren.

          Alan Hathway