Thomas: java-script problem mit ns6

Kann mir jemand helfen? Habe von Java eigentlich keine Ahnung,
aber auf meiner Startseite http://www.schuster-home.de einen Alien,
der den Mauszeiger verfolgt. Leider funktioniert das script unter
ns6 nicht mehr. Was kann ich ändern?

script:
<script language="javascript1.2" src="alien.js"></script>
     <nolayer>
     <style id="NOF_STYLE_SHEET">
     <!--
     DIV#LayoutLYR { position:absolute; top:0; left:0; z-index: 1; visibility:inherit; }
     DIV#Text4LYR { position:absolute; visibility:inherit; top:0; left:0; z-index:1 }
     -->
     </style>
     </nolayer>

P.S. So sieht die "alien.js"-Datei aus:

var Ver4=parseInt(navigator.appVersion.charAt(0))>=4
var IE=navigator.appName.indexOf("Microsoft")!=-1
var al, imagesrc, ex=-32, ey=-32, x0=-32, y0=-32

function BewegeAlien()
{ // Neue Position des Alien berechnen
  if (Math.abs(ex-x0)>=10) { x0+=Math.floor((ex-x0)*0.1) }
  else if (ex!=x0) { x0+=Math.abs(ex-x0)/(ex-x0) }
  if (Math.abs(ey-y0)>=10) { y0+=Math.floor((ey-y0)*0.1) }
  else if (ey!=y0) { y0+=Math.abs(ey-y0)/(ey-y0) }

// entsprechende Grafik in Bezug zur Maus-Position waehlen
  imagesrc=""
  if ( (ex<x0) && ( (x0-ex) > Math.abs(y0-ey)/2 ) )
  { imagesrc="alien_l.gif"
    if ( (x0-ex) < Math.abs(y0-ey)*2 )
    { if (ey<y0) imagesrc="alien_lo.gif"
      if (ey>y0) imagesrc="alien_lu.gif"
    }
  }
  if ( (ex>x0) && ( (ex-x0) > Math.abs(y0-ey)/2) )
  { imagesrc="alien_r.gif"
    if ( (ex-x0) < Math.abs(y0-ey)*2 )
    { if (ey<y0) imagesrc="alien_ro.gif"
      if (ey>y0) imagesrc="alien_ru.gif"
    }
  }
  if (imagesrc=="")
  { if (ey<y0) imagesrc="alien_o.gif"
    if (ey>y0) imagesrc="alien_u.gif"
    if ((ex==x0)&&(ey==y0)) imagesrc="alien.gif"
  }

// Grafik und Position setzen
  if (Ver4)
  { if (!IE)
    { document.AlienLayer.document.images.alien.src=imagesrc }
    else document.all.AlienLayer.document.images.alien.src=imagesrc
  }
  al.left=x0-32
  al.top=y0

setTimeout("BewegeAlien();",100)
}

function MeinMausEvent(e)
{ // Position des Maus-Cursors ermitteln
  if (Ver4)
  { if (!IE)
    { ex=e.pageX
      ey=e.pageY }
    else
    { ex=event.clientX + document.body.scrollLeft
      ey=event.clientY + document.body.scrollTop }
  }
}

function ScriptSetup()
{ // Alle Alien-Grafiken laden
  isIm = (document.images) ? 1 : 0
  if (isIm)
  { arImLoad = new Array
    ('alien','alien_u','alien_o','alien_l','alien_r',
     'alien_lu','alien_lo','alien_ru','alien_ro')
    arImList = new Array ()
    for (counter in arImLoad)
    { arImList[counter] = new Image()
      arImList[counter].src = arImLoad[counter] + '.gif'
    }
  }

// Globale Variablen setzen und Maus-Event initialisieren
  if (Ver4)
  { if (!IE)
    { al=document.AlienLayer
      document.captureEvents(Event.MOUSEMOVE)
    }
    else
    { al=document.all.AlienLayer.style }
    document.onmousemove = MeinMausEvent
    BewegeAlien()
  }
}

function Copyright()
{ window.focus()
  alert("nicht immer auf´n Kopf klicken") }

function ZeigeAlien()
{ // Setzen der Block-Level Container zur Anzeige der Grafiken
  if(Ver4)
  { s ='<DIV STYLE="visibility:hidden"></DIV>'
    s+='<DIV ID="AlienLayer" STYLE="position:absolute; '
    s+='top:-32; left:-32; width:32; height:32">'
    s+='<A HREF="javascript:Copyright();">'
    s+='<IMG NAME="alien" SRC="alien.gif" border=0>'
    s+='</A></DIV>'
    document.writeln(s)
  }
}

window.onload = ScriptSetup
ZeigeAlien()

  1. Hi,

    Kann mir jemand helfen? Habe von Java eigentlich keine
    Ahnung,

    macht nichts - Dein Problem ist JavaScript und kein Java. ;-)

    aber auf meiner Startseite http://www.schuster-home.de einen
    Alien, der den Mauszeiger verfolgt.
    Leider funktioniert das script unter ns6 nicht mehr.
    Was kann ich ändern?

    ziemlich viel.

    Das Problem ist, daß beide verwendete Methoden, sowohl die für Netscape 4 als auch die für den M$, proprietäre Verfahren sind, mit dynamischem HTML umzugehen.

    Statt dieser beiden Methoden gibt es inzwischen einen Standard namens DOM, welchen Netscape 6 unterstützt (moderne M$IE auch schon einigermaßen). Diese Methode müßtest Du lernen - und das Skript entsprechend umschreiben.

    Das alles setzt aber viel "Verstehen" voraus ...

    var Ver4=parseInt(navigator.appVersion.charAt(0))>=4

    Und was ist mit den Browsern, deren Versionsnummer kleiner als 4 ist (Konqueror etc.) ?

    var IE=navigator.appName.indexOf("Microsoft")!=-1

    Tja, das ist schon mal keine gute Methode, da bestimmte Browser (Opera!) sich auf diese Weise als M$IE tarnen können.

    Die ganze Positions-Rechnerei kannst Du beibehalten, die ist nicht vom Browser abhängt. Erst wenn Du etwas ausgibst, wird es nicht mehr funktionieren.

    // Grafik und Position setzen
    if (Ver4)
    { if (!IE)

    ... das hier ist der Fall "nicht M$IE".
    In dem behandelst Du bisher nur Netscape 4; hier mußt Du jetzt zwischen Netscape 4 und Netscape 6 unterscheiden.

    { document.AlienLayer.document.images.alien.src=imagesrc }

    Tja, diesen Layer gibt es halt nur in Netscape 4.

    else

    document.all.AlienLayer.document.images.alien.src=imagesrc

    }

    Der M$IE-Fall kann so bleiben.

    function MeinMausEvent(e)
    { // Position des Maus-Cursors ermitteln
      if (Ver4)
      { if (!IE)

    auch das hier ist bisher den Netscape-4-Zweig - ob da eine Netscape6-Variante notwendig ist, wäre zu prüfen.

    // Globale Variablen setzen und Maus-Event initialisieren
      if (Ver4)
      { if (!IE)
        { al=document.AlienLayer
          document.captureEvents(Event.MOUSEMOVE)

    Ich fürchte, auch das wird in Netscape 6 nicht so gehen.

    (http://selfhtml.teamone.de/javascript/intro.htm)

    Viel Spaß beim DOM-Lernen
         Michael