HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - event.clientX bei Firefox

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

event.clientX bei Firefox

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 22.04.2005 11:20:51    Titel: event.clientX bei Firefox Antworten mit Zitat

Hi Leute,

sicherlich kennt ihr das: ihr klickt auf einen Link (<a href="" onclick="aktion()">LINK</a>) und ein Fenster (<div id="hallo1">Hallo<br>Wurst</div>) erscheint an der Stelle des Links. Dies wird beim IE und Opera mit

document.getElementById(hallo).style.left = document.body.scrollLeft+event.clientX-event.offsetX;

gemacht. Nur beim scheiß Firefox geht das nicht, da es kein "event" ist. Sagt Firefox jedenfalls.

Nun die Frage: wie bekomme ich es hin, daß Firefox merkt auf welchen Link geklickt wurde?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 22.04.2005 12:12:11    Titel: Antworten mit Zitat

es gibt zwar kein window.event.... aber es gibt ein event-objekt dass dem event-handler übergeben wird.
das sollte dir helfen:
http://www.html-world.de/program/dhtml_4.php
(beispiel ganz unten)

gruss,
jan.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 22.04.2005 13:26:54    Titel: Antworten mit Zitat

Hi Jan,

danke fuer die schnelle Antwort, jedoch komme ich mit solch globalen Erklaerungen noch nicht klar.

Versuche:
alert(window.event.clientX);
alert(window.event.pageX);
alert(document.getElementById(ding).clientX);

Ergebnis von Firefox:
Fehler: window.event has no properties

Ich glaube ich raffe das System noch nicht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 22.04.2005 13:36:27    Titel: Antworten mit Zitat

na wie auf der seite steht gibt es bei netscape (also auch beim feuerfuchs) kein window.event - stattdessen wird dem eventhandler ein eigenes event-objekt übergeben. beispiel:


Code:
meinobject.onclick = machwas


function machwas(e)
{
 alert(e.x +' : ' + e.y)
}


sprich: e enthält beim netscape/moz/fire die eigenschaften die window.event im ie/op hat ... (mit einigen unterschieden siehe genannte seite)

jetzt verstanden?

gruss,
jan.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 22.04.2005 15:24:56    Titel: Antworten mit Zitat

Nein, ich raff es nicht und es funzt auch nichts. Wenn ich nichts uebergebe funzt nichts und wenn ich ein objekt uebergebe sagt er wieder es ist undefiniert. Ist doch scheisse alles.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 22.04.2005 15:47:42    Titel: Antworten mit Zitat

liefert doch alles was du brauchst:

Code:
<html>
<head>
<script language="JavaScript">
<!--
function machwas(e)
{
 s = '';
 for(a in e){ s += a + ' = '+ e[a]+'\n'; }
 alert(s);
}
//-->
</script>
</head>
<body>
 <a id="meinlink" href="#">ab gehts</a>
 <script language="JavaScript">
 <!--
 for(i=0;i<document.links.length;i++)
 { document.links[0].onclick = machwas; }
 //-->
 </script>
</body>
</html>
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 17.05.2005 11:28:17    Titel: Noch mal von vorne Antworten mit Zitat

Hi Leute,

da ich jetzt nen kleinen Schritt weitergekommen bin, ich muß das event für den FF mit übertragen, wollte ich noch mal nachfragen.

Ich habe folgendes Script:


Code:
function dropit(objEvt, whichone, refererXY)
{
 if (window.themenu&&themenu!=whichone)
 {
  document.getElementById(themenu).style.visibility="hidden";
 }
 themenu = whichone;

 //IE und Opera
 if (document.all)
 {
  document.getElementById(themenu).style.left = document.body.scrollLeft+event.clientX-event.offsetX;
  document.getElementById(themenu).style.top = document.body.scrollTop+event.clientY-event.offsetY+22;
  document.getElementById(themenu).style.visibility = "visible";
 }

 //Firefox benötigt
 else if (document.getElementById)
 {
   document.getElementById(themenu).style.top = objEvt.clientY +14;
  document.getElementById(themenu).style.left = objEvt.clientX - 50;
  document.getElementById(themenu).style.visibility = "visible";
 }
}


und wird so aufgerufen

Code:
<a href="" onClick="dropit(event,'dropmenu1',1);return false">tralala</a>


folgendes soll dargestellt werden:

Code:
<div id=\"dropmenu1\" tyle="position:absolute;left:0;top:0">Huhuuu</div>


Der IE und Opera positionieren sauber den <div> an die gleiche Stelle, egal wo man bei "tralala" hinklickt (durch "event.offsetX"). Leider kennt der FF das nicht und momentan wird der <div> abhängig positioniert, wohin man bei "tralala" klickt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 19.05.2005 11:15:53    Titel: Antworten mit Zitat

ich sag mal so:

diese kleine hilfsfunktion die alle eigenschaften ausgibt ist immer sehr ratsam wenn man mal nicht weiter weiß. bei mir gibt sie z.b. für objEvt folgendes aus:

--------------
type = click
target = file:///C:/Inetpub/wwwroot/Homepages2/AREJO/tset.html
currentTarget = file:///C:/Inetpub/wwwroot/Homepages2/AREJO/tset.html
eventPhase = 2
bubbles = true
cancelable = true
timeStamp = 0
stopPropagation = function stopPropagation() { [native code] }
preventDefault = function preventDefault() { [native code] }
initEvent = function initEvent() { [native code] }
view = [object Window]
detail = 1
initUIEvent = function initUIEvent() { [native code] }
ctrlKey = false
shiftKey = false
altKey = false
metaKey = false
CAPTURING_PHASE = 1
AT_TARGET = 2
BUBBLING_PHASE = 3
originalTarget = file:///C:/Inetpub/wwwroot/Homepages2/AREJO/tset.html
explicitOriginalTarget = [object Text]
preventBubble = function preventBubble() { [native code] }
preventCapture = function preventCapture() { [native code] }
isTrusted = true
MOUSEDOWN = 1
MOUSEUP = 2
MOUSEOVER = 4
MOUSEOUT = 8
MOUSEMOVE = 16
MOUSEDRAG = 32
CLICK = 64
DBLCLICK = 128
KEYDOWN = 256
KEYUP = 512
KEYPRESS = 1024
DRAGDROP = 2048
FOCUS = 4096
BLUR = 8192
SELECT = 16384
CHANGE = 32768
RESET = 65536
SUBMIT = 131072
SCROLL = 262144
LOAD = 524288
UNLOAD = 1048576
XFER_DONE = 2097152
ABORT = 4194304
ERROR = 8388608
LOCATE = 16777216
MOVE = 33554432
RESIZE = 67108864
FORWARD = 134217728
HELP = 268435456
BACK = 536870912
TEXT = 1073741824
ALT_MASK = 1
CONTROL_MASK = 2
SHIFT_MASK = 4
META_MASK = 8
charCode = 0
keyCode = 0
initKeyEvent = function initKeyEvent() { [native code] }
DOM_VK_CANCEL = 3
DOM_VK_HELP = 6
DOM_VK_BACK_SPACE = 8
DOM_VK_TAB = 9
DOM_VK_CLEAR = 12
DOM_VK_RETURN = 13
DOM_VK_ENTER = 14
DOM_VK_SHIFT = 16
DOM_VK_CONTROL = 17
DOM_VK_ALT = 18
DOM_VK_PAUSE = 19
DOM_VK_CAPS_LOCK = 20
DOM_VK_ESCAPE = 27
DOM_VK_SPACE = 32
DOM_VK_PAGE_UP = 33
DOM_VK_PAGE_DOWN = 34
DOM_VK_END = 35
DOM_VK_HOME = 36
DOM_VK_LEFT = 37
DOM_VK_UP = 38
DOM_VK_RIGHT = 39
DOM_VK_DOWN = 40
DOM_VK_PRINTSCREEN = 44
DOM_VK_INSERT = 45
DOM_VK_DELETE = 46
DOM_VK_0 = 48
DOM_VK_1 = 49
DOM_VK_2 = 50
DOM_VK_3 = 51
DOM_VK_4 = 52
DOM_VK_5 = 53
DOM_VK_6 = 54
DOM_VK_7 = 55
DOM_VK_8 = 56
DOM_VK_9 = 57
DOM_VK_SEMICOLON = 59
DOM_VK_EQUALS = 61
DOM_VK_A = 65
DOM_VK_B = 66
DOM_VK_C = 67
DOM_VK_D = 68
DOM_VK_E = 69
DOM_VK_F = 70
DOM_VK_G = 71
DOM_VK_H = 72
DOM_VK_I = 73
DOM_VK_J = 74
DOM_VK_K = 75
DOM_VK_L = 76
DOM_VK_M = 77
DOM_VK_N = 78
DOM_VK_O = 79
DOM_VK_P = 80
DOM_VK_Q = 81
DOM_VK_R = 82
DOM_VK_S = 83
DOM_VK_T = 84
DOM_VK_U = 85
DOM_VK_V = 86
DOM_VK_W = 87
DOM_VK_X = 88
DOM_VK_Y = 89
DOM_VK_Z = 90
DOM_VK_CONTEXT_MENU = 93
DOM_VK_NUMPAD0 = 96
DOM_VK_NUMPAD1 = 97
DOM_VK_NUMPAD2 = 98
DOM_VK_NUMPAD3 = 99
DOM_VK_NUMPAD4 = 100
DOM_VK_NUMPAD5 = 101
DOM_VK_NUMPAD6 = 102
DOM_VK_NUMPAD7 = 103
DOM_VK_NUMPAD8 = 104
DOM_VK_NUMPAD9 = 105
DOM_VK_MULTIPLY = 106
DOM_VK_ADD = 107
DOM_VK_SEPARATOR = 108
DOM_VK_SUBTRACT = 109
DOM_VK_DECIMAL = 110
DOM_VK_DIVIDE = 111
DOM_VK_F1 = 112
DOM_VK_F2 = 113
DOM_VK_F3 = 114
DOM_VK_F4 = 115
DOM_VK_F5 = 116
DOM_VK_F6 = 117
DOM_VK_F7 = 118
DOM_VK_F8 = 119
DOM_VK_F9 = 120
DOM_VK_F10 = 121
DOM_VK_F11 = 122
DOM_VK_F12 = 123
DOM_VK_F13 = 124
DOM_VK_F14 = 125
DOM_VK_F15 = 126
DOM_VK_F16 = 127
DOM_VK_F17 = 128
DOM_VK_F18 = 129
DOM_VK_F19 = 130
DOM_VK_F20 = 131
DOM_VK_F21 = 132
DOM_VK_F22 = 133
DOM_VK_F23 = 134
DOM_VK_F24 = 135
DOM_VK_NUM_LOCK = 144
DOM_VK_SCROLL_LOCK = 145
DOM_VK_COMMA = 188
DOM_VK_PERIOD = 190
DOM_VK_SLASH = 191
DOM_VK_BACK_QUOTE = 192
DOM_VK_OPEN_BRACKET = 219
DOM_VK_BACK_SLASH = 220
DOM_VK_CLOSE_BRACKET = 221
DOM_VK_QUOTE = 222
DOM_VK_META = 224
screenX = 41
screenY = 135
clientX = 37
clientY = 22
button = 0
relatedTarget = null
initMouseEvent = function initMouseEvent() { [native code] }
requestingWindowURI = null
popupWindowURI = null
popupWindowFeatures =
initPopupBlockedEvent = function initPopupBlockedEvent() { [native code] }
getPreventDefault = function getPreventDefault() { [native code] }
layerX = 37
layerY = 22
pageX = 37
pageY = 22
which = 1
rangeParent = [object Text]
rangeOffset = 6
cancelBubble = false
isChar = false
SCROLL_PAGE_UP = -32768
SCROLL_PAGE_DOWN = 32768
--------------


da ist ziemlich viel müll dabei, aber recht weit hinten auch ein paar interessante sachen Wink
die funktion nochmal:

Code:
function machwas(e)
{
 s = '';
 for(a in e){ s += a + ' = '+ e[a]+'<br>'; }
 z = window.open();
 z.document.open();
 z.document.writeln(s);
 z.document.close();
}



gruss,
jan.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
Sir Quicksand
Häufiger Poster


Anmeldungsdatum: 19.01.2005
Beiträge: 304
Wohnort: Hannover

BeitragVerfasst am: 31.05.2005 19:46:59    Titel: Antworten mit Zitat

Jau thx, aber ein event.offsetX hat der scheiß FF nicht.

Ich habe jetzt diverse Pulldownmenüs analysiert. Und überall da, wo die Menüs funzen wird IMMER mit absoluten Pos Werten gearbeitet.

Kann man irgendwie rausfinden, an welchen Erweiterungen die Leute um den FF arbeiten? Vielleicht releasen sie ja mal ein nicht Bugfix, sondern ein Update und mein event.offsetX geht auf einmal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
struppi
Forumsteilnehmer


Anmeldungsdatum: 03.02.2005
Beiträge: 9

BeitragVerfasst am: 02.06.2005 10:14:34    Titel: Antworten mit Zitat

Kuck dir mal die Seite an http://www.quirksmode.org/js/events_events.html
Da steht alles über Events, letztlich macht der IE mehr Probleme da du dort aufpassen musst ob du im Quirks oder Standardmode bist.

Ein Problem was unter Umständen bei deinem Skript noch auftaucht, ist, dass du keine Einheiten angibst:
[..].style.left = 100

Was left? es gäbe letztlich folgende Möglichkeiten:
http://www.html-world.de/program/css_me.php
Entweder rät der Browser was du willst oder du sagst es ihm einfach.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.