Mausverfolgung
maximus_de
- javascript
0 JürgenB0 Der Martin
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>
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
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
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?