Mouse Position
Suse
- javascript
Hi,
Warum ist der Server bei sovielen Spenden denn immernoch ausgelastet hä? - egal will jetzt hier keine diskusion über das Archiv führen sondern möchte mal wissen wie ich in Javascript die aktuelle mouseposition in x und y bekomme.
ich rufe die function mausposi() auf und möchte testweise über ein alert sehen wo meine maus auf der seite steht wenn ich sie zb über ein link oder so aufrufe.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<script language="JavaScript1.2">
function mausposi(){
var tempX = '1';
var tempY = '2';
//HIER BRAUCHE ICH DIE FUNKTION (sollte in allen Browsern laufen!)
alert("tempX =" + tempX + " & tempY " + tempY + "."); // test
}
</script>
<a href="#" onmouseover="mausposi()">das ist ein link</a>
Danke!
Hallo.
Warum ist der Server bei sovielen Spenden denn immernoch ausgelastet hä? - egal will jetzt hier keine diskusion über das Archiv führen sondern möchte mal wissen wie ich in Javascript die aktuelle mouseposition in x und y bekomme.
Der Server erlaubt ungehinderten Zugriff auf Selfhtml, warum schaust du dort nicht nach?
http://selfhtml.teamone.de/javascript/objekte/event.htm
Grüße
Siechfred
Hi,
<html><head><title>Test</title>
<script type="text/javascript">
<!--
function Position(Ereignis)
{
alert("x-Wert: " + Ereignis.screenX + " / y-Wert: " + Ereignis.screenY);
}
document.onmousedown = Position;
//-->
</script>
</head><body>
</body></html>
geht das nicht auch irgendwie anderster?
ich müsste das irgendwie in meine function einbauen. ich versteh nicht das mit ereignis nicht ganz und was document.onmousedown = Position; soll uws.
Danke
hi,
geht das nicht auch irgendwie anderster?
kein kommentar :-)
ich müsste das irgendwie in meine function einbauen.
tu dir keinen zwang an.
ich versteh nicht das mit ereignis nicht ganz und was document.onmousedown = Position; soll uws.
dann geh erst mal in selfhtml nachlesen, was es mit events auf sich hat.
http://selfhtml.teamone.de/javascript/objekte/event.htm#allgemeines
gruss,
wahsaga
eijeijei...
Ich möchte doch nur wissen wie ich
document.onmousedown = Position;
durch onmouseover in einem link ersetzen kann.
so dass beim drüberfahren mit der maus das alert kommt und nicht wenn ich egal wo hinklicke.
Danke!
eijeijei...
Ich möchte doch nur wissen wie ich
document.onmousedown = Position;
durch onmouseover in einem link ersetzen kann.
wo ist das Problem?
steht doch alles in selfhtml http://selfhtml.teamone.de/html/attribute/eventhandler.htm#uebersicht
Struppi.
Ich könnte ausrasten das ich für so eine verdammte kleinigkeit nen halben tag rum mache ARGH ARGh ARGH echt verdammt öde das ganze.
ich muss mich echt zusammenreisen.
Das Problem ist folgendes
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<script language="JavaScript">
function mausposi(pnr){
//pnr brauche ich wo anderster
tempX = screenX;
tempY = screenY;
alert("tempX =" + tempX + " & tempY " + tempY + "."); // test
}
</script>
<br><br><br>
<a href="#" onmouseover="mausposi(1)">das ist ein link</a>
ich möchte die aktuelle maus position in tempX und Y haben. mehr nicht! mehr ist es nicht!
es kann doch nicht sein das das mit nem normalen onmouseover nicht geht warum dieses blöde "document.onmousedown = mausposi;"
Bitte helft mir!
Danke
hi,
function mausposi(pnr){
//pnr brauche ich wo anderstertempX = screenX;
was _ist_ deiner meinung nach an dieser stelle screenX?
wie du im original-script siehst, ist dies dort eine eigenschaft des ausgelösten ereignisses (onmousedown), Ereignis.screenX.
in deinem script ist es aber lediglich eine - vermutlich nicht existente - eigene variable von dir.
gruss,
wahsaga
Hi,
Ich bitte dich mal mir zu sagen wie ich das script umschreiben muss damit es so funktioniert wie ich es gerne hätte:
<script language="JavaScript">
function mausposi(pnr){
//pnr brauche ich wo anderster
tempX = Ereignis.screenX;
tempY = Ereignis.screenY;
alert("tempX =" + tempX + " & tempY " + tempY + "."); // test
}
</script>
<br><br><br>
<a href="#" onmouseover="mausposi(1)">das ist ein link</a>
das ist doch eigentlich ganz simpel, aber ich weiss eben nichts mit dem ereignis. anzufangen.
Danke.
Hi,
ich hab da mal was:
<script language="JavaScript">
<!--
var xpos=0;
var ypos=0;
if (navigator.appName == 'Netscape') {
document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = mauspos;
function mauspos(e) {
if (navigator.appName == 'Netscape') {
xpos = e.pageX;
ypos = e.pageY;
} else {
xpos = window.event.x;
ypos = window.event.y;
}
}
function anzeige() {
alert (xpos + " " + ypos);
}
//-->
</script>
Obiges kommt in den Header.
Und das wäre der Link dazu:
<a onMouseMove="anzeige()" href="#">MeinLink</a>
Ich bin ja selber nur ein kleiner Amateur. Würde mich interessieren, ob die Profis hier mein Script für gut befindet würden ;-) .
ich hab da mal was:
um deine Frage am Ende zu beantworten: nein!
<script language="JavaScript">
Es fehklt das type attribut.
<!--
var xpos=0;
var ypos=0;if (navigator.appName == 'Netscape') {
document.captureEvents(Event.MOUSEMOVE);
}
Woher weißt du, dass nur Netscape diese Methode verwendet?
if (document.captureEvents)
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = mauspos;
function mauspos(e) {
if (navigator.appName == 'Netscape') {
xpos = e.pageX;
ypos = e.pageY;
} else {
xpos = window.event.x;
ypos = window.event.y;
}
Auch hier, nicht Netscape ist der indikator dafür das in e etwas enthalten ist.
xpos = e ? e.pageX : window.event.x;
ypos = e ? e.pageY :window.event.y;
<a onMouseMove="anzeige()" href="#">MeinLink</a>
onmouseover
Ich bin ja selber nur ein kleiner Amateur. Würde mich interessieren, ob die Profis hier mein Script für gut befindet würden ;-) .
s.o.
Struppi.
Oh, ja. Jetzt bin ich wieder ein wenig schlauer geworden ;-) .
OK jetzt hab ichs aber nicht wegen deinem Posting hab mal rum gegooglet.
jetzt kommt natürlich noch ne frage auf:
wenn ich X und Y habe heisst das ja noch lange nicht das das auch gleichzeitig left und top ist. wie mache ich das jetz?
Danke
OK jetzt hab ichs aber nicht wegen deinem Posting hab mal rum gegooglet.
...
jetzt kommt natürlich noch ne frage auf:
wenn ich X und Y habe heisst das ja noch lange nicht das das auch gleichzeitig left und top ist. wie mache ich das jetz?
Das findet man bestimmt auch mit rummgooglen.
Das findet man bestimmt auch mit rummgooglen.
oh sorry, sei mir nicht böse, bin dir auf jeden dankbar!
Hallo Suse,
wenn ich X und Y habe heisst das ja noch lange nicht das das auch gleichzeitig left und top ist. wie mache ich das jetz?
im Moz (und alles was davon abgeleitet ist) sowie im NN 4 bezieht sich die gelieferte Position auf den Beginn der _gesamten_ Seite. Du erhältst also eine Position die ein evtuelles scrolling der Seite mit einbezieht.
Im IE wird die Position innerhalb des _sichtbaren_ Teiles der Seite geliefert. Um das gleiche Verhalten zu erreichen musst du im IE < 6 document.body.scrollTop addieren (entsprechendes für horizontal).
Im IE 6 hängt es vom Kompatibilitätsmodus des Browsers ab.
Entweder document.body.scrollTop im Quirksmode oder document.documentElement.scrollTop im "CSS1Compat" Mode
Opera, zumindest der 7er verhält sich wie der Mozilla.
HTH
Jochen
Hallo,
Das Thema ist echt nervig.
also ich hab jetzt folgendes Script zusammengestellt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<style>
<!--
.skin{
position:absolute;
border:1px solid black;
background-color:menu;
font-family:Verdana;
line-height:20px;
cursor:default;
font-size:12px;
z-index:100;
visibility:hidden;
padding-left:10px;
padding-right:10px;
}
-->
</style>
</HEAD>
<BODY>
<script language="JavaScript">
function on(pnr,event){
var tempX = event.screenX; //left
var tempY = event.screenY-100; //top
//alert("tempX =" + tempX + " & tempY " + tempY + "."); // test
var menpn = "menu" + pnr;
document.getElementById(menpn).style.top= tempY; // <---
document.getElementById(menpn).style.left= tempX; // <---
document.getElementById(menpn).style.visibility='visible';
}
function off(pnr){
var menpn = "menu" + pnr;
document.getElementById(menpn).style.visibility='hidden';
}
document.onmousemove = on;
</script>
<div id="menu1" class="skin" STYLE="position:absolute; left:0px; top:0px;" display:none>
Hallo<br>Hallodfsgasdf
</div>
<div id="menu2" class="skin" STYLE="position:absolute; left:0px; top:0px;" display:none>
Hallo<br>Hahzsfhhhhhhhhhhhhhhhhhhhhh
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href="#" onmouseover="on(1,event)" onMouseout="off(1)">das ist ein link</a>
<br><br>
<a href="#" onmouseover="on(2,event)" onMouseout="off(2)">das auch</a>
</BODY>
</HTML>
so bin ich schon ziemlich am ziel bis auf scrolling wie du schon erwähnt hast, denn das geht dann nämlich "zu weit" :-)
dein MousOMeter script ist toll, aber da blicke ich nicht mehr durch.
ich will doch nur sone blöde info box programmieren, es müsste doch eigentlich 10000 fertige davon geben - schon 20000 mal im WEB gesehen und wir schlagen uns immernoch damit rum...
aber nun gut. was muss ich nun noch machen damit ich die Absolute Position bekomme incl scrolling usw?
Daaaanke!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<style>
<!--
.skin{
position:absolute;
border:1px solid black;
background-color:menu;
font-family:Verdana;
line-height:20px;
cursor:default;
font-size:12px;
z-index:100;
visibility:hidden;
padding-left:10px;
padding-right:10px;
}
-->
</style>
</HEAD>
<BODY>
<script language="JavaScript">
function on(pnr,event){
var tempX = event.pageX+5;
var tempY = event.pageY+5;
var menpn = "menu" + pnr;
document.getElementById(menpn).style.top= tempY;
document.getElementById(menpn).style.left= tempX;
document.getElementById(menpn).style.visibility='visible';
}
function off(pnr){
var menpn = "menu" + pnr;
document.getElementById(menpn).style.visibility='hidden';
}
</script>
<div id="menu1" class="skin" STYLE="position:absolute; left:0px; top:0px;" display:none>
Layer1
</div>
<div id="menu2" class="skin" STYLE="position:absolute; left:0px; top:0px;" display:none>
Layer2
</div>
<a href="#" OnMouseOver="on(1,event)" OnMouseMove="on(1,event)" OnMouseOut="off(1)">das ist ein link</a>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href="#" OnMouseOver="on(2,event)" OnMouseMove="on(2,event)" OnMouseOut="off(2)">das auch</a><br><br>
</BODY>
</HTML>
Hallo Suse,
nein das skript funktioniert nicht, du hast auch so gut weie keinen Hinweis eingebaut. Im gegenteil du hast lediglich einige falsche Hinweise eingebaut.
<script language="JavaScript">
Es fehlt das type attribut:
<script type="text/javascript">
function on(pnr,event){
Da hab ich selber was neues gelernt, ich wußte gar nicht das MZ und Opera auch das event Objekt kennen.
var tempX = event.pageX+5;
var tempY = event.pageY+5;
und das funktioniert nur im Mozilla.
Der Hinqweis von Jürgen sollte dich dahin führen:
var tempX = evt.pageX ? evt.pageX : evt.offsetX;
var tempY = evt.pageY ? evt.pageY : evt.offsetY;
var menpn = "menu" + pnr;
document.getElementById(menpn).style.top= tempY;
document.getElementById(menpn).style.left= tempX;
document.getElementById(menpn).style.visibility='visible';
na gut, das ist richtig läßt sich aber sauberer umsetzten:
if(!document.getElementById) return;
var obj = document.getElementById("menu" + pnr)
if(!obj) return;
obj.style.top= tempY + 'px';
obj.style.left= tempX + 'px';
obj.style.visibility='visible';
<a href="#" OnMouseOver="on(1,event)" OnMouseMove="on(1,event)" OnMouseOut="off(1)">das ist ein link</a>
Das mousmove ist überflüssig.
Struppi.
Hallo Suse,
document.getElementById(menpn).style.top= tempY; // <---
document.getElementById(menpn).style.left= tempX; // <---
die Position benötigt eine Einheit: ..=tempY+"px";
dein MousOMeter script ist toll, aber da blicke ich nicht mehr durch.
so? das macht doch fast das Gleiche, wie Dein Script, nur das auch andere Browser berücksichtigt werden. Das Scroll-Problem lässt sich evtl. lösen, wenn Du statt clientx/y offsetx/y nimmst.
Gruß, Jürgen
Ich bitte dich mal mir zu sagen wie ich das script umschreiben muss damit es so funktioniert wie ich es gerne hätte:
Naja, dann bist du im falschen Forum. Lies mal was über diesem hier steht.
<script language="JavaScript">
Da fehlt der type.
function mausposi(pnr){
//pnr brauche ich wo anderstertempX = Ereignis.screenX;
tempY = Ereignis.screenY;
Was ist Ereignis? Wo ist das definiert?
alert("tempX =" + tempX + " & tempY " + tempY + "."); // test
Ich vermute mal das wird nie angezeigt.
}
</script>
<br><br><br>
<a href="#" onmouseover="mausposi(1)">das ist ein link</a>
Das Problem ist, das das was du willst nicht so ohne weiteres geht.
Netscape übergibt im Normalfall einem Event ein Event Objekt als ersten Parameter, bei einem Aufruf über HTML ist dies nicht vorhanden und folglich läßt ich auch die Mausposition nicht herrausfinden.
Mit dem IE würde es gehen, allerdings ist es dort schwieriger die Position zu berechnen, wenn die Seite gescrollt ist. (siehe mein Link vom 1. Posting)
Die Frage ist, was du erreichen willst.
das ist doch eigentlich ganz simpel, aber ich weiss eben nichts mit dem ereignis. anzufangen.
Wer sagt denn, dass es simpel ist?
Ich sage schon die ganze Zeit, das es kompliziert ist.
Da es drauf ankommt, was du machen willst und welche Werte du brauchst.
Struppi.
Hallo Suse
Hi,
Warum ist der Server bei sovielen Spenden denn immernoch ausgelastet hä? - egal will jetzt hier keine diskusion über das Archiv führen sondern möchte mal wissen wie ich in Javascript die aktuelle mouseposition in x und y bekomme.
google ist erreichbar http://www.google.de/search?q=mausposition+javascript&ie=UTF-8&oe=UTF-8&hl=de&btnG=Google+Suche&meta=lr%3Dlang_de|lang_en
ich rufe die function mausposi() auf und möchte testweise über ein alert sehen wo meine maus auf der seite steht wenn ich sie zb über ein link oder so aufrufe.
Die Mausposition ist im IE recht kompliziert zu berechnen und im Netscape 4.x teilweise gar nicht http://home.arcor.de/struebig/js/lib/mouse.html (es gibt im NC 4.x keinen Wert, für die aktuelle position im Fenster, sondern nur im Dokument und auf dem Bildschirm)
Struppi.
Hallo Struppi,
Du benutzt in Deiner Bibliothek clientX/Y und addierst dann scrollLeft/Top für die Position im Dokument. Was spricht denn gegen offsetX/Y ?
Gruß, Jürgen
Du benutzt in Deiner Bibliothek clientX/Y und addierst dann scrollLeft/Top für die Position im Dokument. Was spricht denn gegen offsetX/Y ?
Ich werde das gerne ausprobieren.
Welche Versionen machen das richtig?
Der IE 4.x scheint es zu können (was anderes hab ich grad nicht da.)
Struppi.
Hallo,
Welche Versionen machen das richtig?
IE6, MOZ 1.3 und 1.6, Opera 7.03 und 7.22, Firebird 0.7 und Firefox 0.8 und Netscape 7.01. Alle unter Windows. Unter Linux habe ich nur den Konqueror, der mit den Mausevents in dieser Form nicht klar kommt.
Gruß, Jürgen