maximus_de: Mausverfolgung

Das mit dem div ist geklärt und funtioniert, aber warum funtioniert folgendes im FF nicht obwohl FF es interpretiren soll:

<html>
<head>
<title></title>
<meta name="author" content="">
<meta name="description" content="">
</head>

<script language="JavaScript">
<!--

TFarbe_Jhr = "#ff0000";
TFarbe_Mnt = "#00ff00";
TFarbe_Tag = "#0000ff";
TFarbe_Std = "#fff000";
TFarbe_min = "#000fff";
TFarbe_sek = "#ff00ff";
/*ClHight = 40;
ClWidth = 40; */
DisToMouseX = 0;
DisToMouseY = 0;

/*************************************************************************************
 *        Ab hier sollten keine Ämderungen vorgenommen werden!                *
 *************************************************************************************/
document.write("<style type='text/css'>div#Time{position:relative;top:5px;left:25px;}</style>");
document.write("<div id='Time'></div> ");
document.write("<style type='text/css'>span#t{color:" + TFarbe_Tag + "}</style>");
document.write("<style type='text/css'>span#j{color:" + TFarbe_Jhr + "}</style>");
document.write("<style type='text/css'>span#mo{color:" + TFarbe_Mnt + "}</style>");
document.write("<style type='text/css'>span#mi{color:" + TFarbe_min + "}</style>");
document.write("<style type='text/css'>span#st{color:" + TFarbe_Std + "}</style>");
document.write("<style type='text/css'>span#se{color:" + TFarbe_sek + "}</style>");

function Zeit() {
t = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
m = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
date = new Date();
jhr = date.getYear();
mnt = date.getMonth();
tag = date.getDay();
tag_nr = date.getDate();
std = date.getHours();
min = date.getMinutes();
sek = date.getSeconds();

if (jhr < 1900){jhr += 1900}

if (sek <= 9){
vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
vjahr = "<span id='j'>" + " " + jhr + "</span>";
vtime = "  " + std + ":" + min + ":" + "0" + sek;
}
else if (min <= 9){
vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
vjahr = "<span id='j'>" + " " + jhr + "</span>";
vtime = "  " + std + ":0" + min + ":" + sek;
}
else if (min && sek <= 9){
vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
vjahr = "<span id='j'>" + " " + jhr + "</span>";
vtime = "  " + std + ":0" + min + ":0" + sek;
}
else{
vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
vjahr = "<span id='j'>" + " " + jhr + "</span>";
vtime = "  " + std + ":" + min + ":" + sek;
}
//Ausgabe des Datums mit Zeit
window.document.getElementById("Time").innerHTML = vdate + vjahr + vtime;
//Wiederhohlung
window.setTimeout('Zeit()', 100)
}
function mouse(Ereignis) {
 if(!Ereignis) {
    Ereignis = window.event;
 }
/* nun folgt der fehler, zum folenden sagt FF folgendes:"Ereignis has no proporties"
*/
  document.getElementById("Time").style.left = Ereignis.screenX -(-DisToMouseX);
  document.getElementById("Time").style.top = Ereignis.screenY - 130 -(-DisToMouseY);

}
//-->
</script>
<noscript></noscript>
<body onLoad="Zeit()" onMouseMove="mouse()">

<p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p>
</body>
</html>

  1. Hallo maximus_de,

    html-Code, auch wenn er per JS erstellt wird, sollte immer zwischen <body> und </body> stehen. Außerdem heißt es <script type="text/javascript">.

    Gruß, Jürgen

  2. Hallo,

    Das mit dem div ist geklärt und funtioniert, ...

    wovon redest du? .oO(grübel)

    aber warum funtioniert folgendes im FF nicht obwohl FF es interpretiren soll:

    Möglicherweise, weil es defekten Code enthält bzw. sogar erzeugt?

    <html>
    <head>
    <title></title>
    <meta name="author" content="">
    <meta name="description" content="">
    </head>

    <script language="JavaScript">
    <!--

    Hier beginnt ein Javascript "in the middle of nowhere". Ein Script darf im head oder im body stehen, aber nicht dazwischen. Davon abgesehen fehlt das erforderliche type-Attribut; das language-Attribut kann bei der Gelegenheit ins Museum. Der HTML-Kommentar auch.

    document.write("<style type='text/css'>div#Time{position:relative;top:5px;left:25px;}</style>");
    document.write("<div id='Time'></div> ");

    Hier erzeugt dein Script einen style-Block, der außerhalb des head-Elements nichts verloren hat, und dann nahtlos anschließend ein div-Element. Damit beginnt der Browser auf jeden Fall implizit mit dem body-Element.

    document.write("<style type='text/css'>span#t{color:" + TFarbe_Tag + "}</style>");
    document.write("<style type='text/css'>span#j{color:" + TFarbe_Jhr + "}</style>");
    document.write("<style type='text/css'>span#mo{color:" + TFarbe_Mnt + "}</style>");
    document.write("<style type='text/css'>span#mi{color:" + TFarbe_min + "}</style>");
    document.write("<style type='text/css'>span#st{color:" + TFarbe_Std + "}</style>");
    document.write("<style type='text/css'>span#se{color:" + TFarbe_sek + "}</style>");

    Und folglich sind auch diese sechs style-Elemente an dieser Stelle völlig fehl am Platze - warum übrigens sechs getrennte Blöcke, anstatt die Regeln in einen Block zusammenzufassen?

    window.document.getElementById("Time").innerHTML = vdate + vjahr + vtime;

    Das window-Objekt brauchst du nicht extra zu notieren, das ist der Default.

    function mouse(Ereignis) {
    if(!Ereignis) {
        Ereignis = window.event;
    }
    /* nun folgt der fehler, zum folenden sagt FF folgendes:"Ereignis has no proporties"
    */

    Hast du dir mal zur Kontrolle ausgeben lassen, was dein Eventhandler wirklich übergeben bekommt?

    <noscript></noscript>

    Das ist ziemlich sinnfrei. ;-)

    So long,
     Martin

    --
    Das Gehirn ist schon eine tolle Sache: Es fängt ganz von allein an zu arbeiten, wenn man morgens aufsteht, und hört erst damit auf, wenn man in der Schule ankommt.
      (alte Schülererkenntnis)
    1. also ich hab den Quelltext verändert:
      <html>
      <head>
      <title></title>
      <meta name="author" content="">
      <meta name="description" content="">

      <script type="text/JavaScript">

      TFarbe_Jhr = "#ff0000";
      TFarbe_Mnt = "#00ff00";
      TFarbe_Tag = "#0000ff";
      TFarbe_time_ = "#fff000";

      /*ClHight = 40;
      ClWidth = 40; */
      DisToMouseX = 0;
      DisToMouseY = 0;

      /*************************************************************************************
       *        Ab hier sollten keine Ämderungen vorgenommen werden!                *
       *************************************************************************************/
      document.write("<style type='text/css'>div#Time{position:relative;top:5px;left:25px;}");
      document.write("span#t{color:" + TFarbe_Tag + ";}");
      document.write("span#j{color:" + TFarbe_Jhr + ";}");
      document.write("span#mo{color:" + TFarbe_Mnt + ";}");
      document.write("span#time_{color:" + TFarbe_time_ + ";}</style>");
      document.write("</head>")
      document.write("<body onLoad='Zeit()' onMouseMove='mouse()'>");
      document.write("<div id='Time'></div> ");

      function Zeit() {
      t = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
      m = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
      date = new Date();
      jhr = date.getYear();
      mnt = date.getMonth();
      tag = date.getDay();
      tag_nr = date.getDate();
      std = date.getHours();
      min = date.getMinutes();
      sek = date.getSeconds();

      if (jhr < 1900){jhr += 1900}

      if (sek <= 9){
      vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
      vjahr = "<span id='j'>" + " " + jhr + "</span>";
      vtime = "<span id='time'>" + "  " + std + ":" + min + ":" + "0" + sek + "</span>";
      }
      else if (min <= 9){
      vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
      vjahr = "<span id='j'>" + " " + jhr + "</span>";
      vtime = "<span id='time'>" + "  " + std + ":" + min + ":" + "0" + sek + "</span>";
      }
      else if (min && sek <= 9){
      vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
      vjahr = "<span id='j'>" + " " + jhr + "</span>";
      vtime = "<span id='time'>" + "  " + std + ":" + min + ":" + "0" + sek + "</span>";
      }
      else{
      vdate = "<span id='t'>" + t[tag] + " " + tag_nr + ". " + "</span>" + "<span id='mo'>" + m[mnt] + "</span>";
      vjahr = "<span id='j'>" + " " + jhr + "</span>";
      vtime = "<span id='time'>" + "  " + std + ":" + min + ":" + "0" + sek + "</span>";
      }
      //Ausgabe des Datums mit Zeit
      window.document.getElementById("Time").innerHTML = vdate + vjahr + vtime;
      //Wiederhohlung
      window.setTimeout('Zeit()', 100)
      }
      function mouse(Ereignis) {
       if(!Ereignis) {
          Ereignis = window.event;
       }
            document.write(Ergebnis); //FF sagt,"Ereignis is not defined, aber ich nutze es wie in http://de.selfhtml.org/javascript/objekte/event.htm#screen_x_ySELF-HTML[/link] beschrieben ist"
        document.getElementById("Time").style.left = Ereignis.screenX -(-DisToMouseX);
        document.getElementById("Time").style.top = Ereignis.screenY - 130 -(-DisToMouseY);

      }

      </script>

      <p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p><p>Hallo</p>
      </body>
      </html>

      Hast du dir mal zur Kontrolle ausgeben lassen, was dein Eventhandler wirklich übergeben bekommt?