kleines DHTML Problem fuer Profis
Thomas Hieck
Hallo liebe Forumsteilnehmer,
vor einer Weile schon bin auf folgendes Problem gestossen. Es geht um DHTML.. Die Idee war das Menu auf einer Seite verschiebar zu machen. Also man klickt drauf und kann es wenn man geklickt haelt verschieben. Wenn man loslaesst geht nichts mehr. Das ganze natuerlich Crossbrowser. Geht auch alles wunderbar - kein Problem. ABER: Beim Test mit Netscape musste ich feststellen, dass dier Links auf dem Menu nichtmehr funktionieren. Beim Explorer war das kein Problem - alles geht wie, als wenn es nicht dragable waere. Netscaoe zeigt mir durch die Maus (Hand) wo links sind, aber bei Klick passiert nichts. Ich hab so ziemlich alle Tricks versucht, um das hinzubekommen - immer mal wieder - ohne Erfolg. Letztlich hab ich mir damit geholfen bei Netscape nur einen schmale Leiste klickbar zum Verschieben zu machen. Ist auch wunderschoen, aber irgendwie interessiert mich schon, ob es nicht auch mit dem ganzen Menu geht und die Links aktiv bleiben. Ist vielleicht ein Link beim Explorer Hoeherwertig als ein onMousedown Event? Bei Netscape offensichtlich nicht. Gibt es dazu Standards? Kennt jemand das Problem?
Vielen Dank, Thomas Hieck !
P.S. Achso Knud - es geht nicht um die e7 Seite, sondern meine eigene. Nichts fuer ungut - wieder Freunde :-)
Hallo Thomas,
genau das war das Problem worüber wir wohl auch schon live diskutierten :-) und etwas kontrovers auseinander geganen sind ...
Ich hab diesbezüglich sämtliche verfügbare online/bookware Literatur gewälzt und keine Lösung gefunden ... es scheint einfach keine zu geben :-( selbst ein doubleClick bringt einen nicht weiter.
Einziger Ausweg ist die Verschiebbarmachung nicht durch ein mousedown event sondern evtl. mit Keyboard abfrage. Oder ein Layermove wie Stefan es in selfhtml gemacht hat mit onClick. Alternativ könnte man natürlich auch die Linkausführungen in Mouseover gestalten ... das ist allerdings nur die halbe Lösung :-(
P.S. Achso Knud - es geht nicht um die e7 Seite, sondern meine eigene. Nichts fuer ungut - wieder Freunde :-)
Es ist prinzipiell egal bei welchen Seiten es nicht geht :-)
Und Freund bin ich immer :-)
Gruß Knud
Hallo Thomas,
genau das war das Problem worüber wir wohl auch schon live diskutierten :-) und etwas kontrovers auseinander geganen sind ...
Nein, das Problem lag damals etwas anders. Es ging darum, genau das, was man mit der Maus anfassen und verschieben konnte auch klickbar zu machen. Das will ich nicht. Ich will da anfassen, wo kein Link ist. Wo ein Link ist, da soll ich klicken koennen. Beim Explorer perfekt, aber Netscape eben nicht. Liegt wohl an der hohen Einstufung der Links dass es beim IE geht.
Einziger Ausweg ist die Verschiebbarmachung nicht durch ein mousedown event sondern evtl. mit Keyboard abfrage. Oder ein Layermove wie Stefan es in selfhtml gemacht hat mit onClick. Alternativ könnte man natürlich auch die Linkausführungen in Mouseover gestalten ... das ist allerdings nur die halbe Lösung :-(
Nein, das gefaellt mir da ueberhaupt nicht. Ist nicht akzeptabel. Wie gesagt ich hab dann einfach nur einen schmalen Streifen, wo keine Links sind fuer NS zum anfassen gemacht. mit dem Explorer geht alles wie gehabt.
P.S. Achso Knud - es geht nicht um die e7 Seite, sondern meine eigene. Nichts fuer ungut - wieder Freunde :-)
Es ist prinzipiell egal bei welchen Seiten es nicht geht :-)
Und Freund bin ich immer :-)
Dann ist ja gut. Geht mich ja auch nix an, was da mit e7 gelaufen. Leicht ist es sicher nicht, sich gegen sture Grafiker durchzusetzten, die keine Ahnung haben. Morgen hab ich wieder das Vergnuegen :-/
Ist auch wunderschoen, aber irgendwie interessiert mich schon, ob es nicht auch mit dem ganzen Menu geht und die Links aktiv bleiben. Ist vielleicht ein Link beim Explorer Hoeherwertig als ein onMousedown Event? Bei Netscape offensichtlich nicht. Gibt es dazu Standards? Kennt jemand das Problem?
Übrigens geht es dann, wenn man die Links in einen negativen Bereich der Layer legt. Ich hatte Dir das ja auch schon entsprechend vorgeführt, und die URL dürfte Dir zur Verfügung stehen, auf der Du Dir das Ergebnis anschaust.
Dummerweise lässt sich dann das Objekt von einer Seite verschieben (oder daneben) und auf der anderen Seite nur anklicken. Dank fehlernder kpl. css definition geht es immer nur von links aus gesehen ... von rechts hat man da keine Chance.
Gruß Knud
Übrigens geht es dann, wenn man die Links in einen negativen Bereich der Layer legt. Ich hatte Dir das ja auch schon entsprechend vorgeführt, und die URL dürfte Dir zur Verfügung stehen, auf der Du Dir das Ergebnis anschaust.
Das ist klar, aber fuer mich nicht akzeptabel. Da bin ich nun mal recht eigensinnig. Dann bleib ich lieber bei meiner bisherigen Loesung.
Dummerweise lässt sich dann das Objekt von einer Seite verschieben (oder daneben) und auf der anderen Seite nur anklicken. Dank fehlernder kpl. css definition geht es immer nur von links aus gesehen ... von rechts hat man da keine Chance.
Ja ich weiss - ich hab es gesehen. Das Probelm war auch damals der Klick. Man kann einen Bereich nicht einfach nur auslassen. Es sei denn Du haettest damals zwei Layer dafuer gemacht. Einen Links und einen rechts davon, mit der gleichen Eigenschaft, das man bei onMousedown verschieben kann.
Mit den Tastenkombinationen, wie uns Sabine vorgefuehrt hat sehe ich auch nicht als Loesung. Ein Surfer bewegt sich normalerweise mit der Maus ueber eine Seite, und will nur Bedingt Tasten-Maus-Kombinationen nutzen.
Hallo,
Crossbrowser. Geht auch alles wunderbar - kein Problem. ABER: Beim Test mit Netscape musste ich feststellen, dass dier Links auf dem Menu nichtmehr funktionieren.
Ohne was zu sehen, kann man dazu natuerlich schwer was sagen.
Aber irgendwie klingt mir das nach nicht ganz passenden return-Werten bei Funktionen, die durch events aktiviert werden.
Schau doch mal durch, ob da was klemmen konnte.
Z.B. kein return true in einer Funktion, die bei mouseup aktiv wird, koennte sowas bewirken.
Aber, s.o., ist alles nur Vermutung.
Christine
Liebe Christine, :-)
Ohne was zu sehen, kann man dazu natuerlich schwer was sagen.
Aber irgendwie klingt mir das nach nicht ganz passenden return-Werten bei Funktionen, die durch events aktiviert werden.
Schau doch mal durch, ob da was klemmen konnte.
Z.B. kein return true in einer Funktion, die bei mouseup aktiv wird, koennte sowas bewirken.
Aber, s.o., ist alles nur Vermutung.
Wow - ich muss mich mal wieder sehr tief verneigen. Ich hatte wirklich ein "return false" statt ein "return true" gesetzt. Dummer Fehler, aber manchmal sieht man den eigenen Code eben doch nicht mehr so richtig. Das war genau, was ich erhofft hatte. Eine kleine Idee, wo man mal nachschauen kann. Muss mich also wirklich herzlich bedanken bei Dir. Im Bezug kann auf Stefans Posting kann ich nur sagen, dass es schade waer, wenn Du hier nichtmehr reinschaust.
Sehen kannst DU leider erst in zwei oder drei Wochen, was ich verbrochen habe.
Vielen Dank nochmal, Thomas Hieck
Kurze Erklaerung:
Der Fehler lag wirklich in einem falschem return Wert. Will man eine solche Dragfunktion einbauen, muss man darauf achten, dann man bei onMousedown und onMouseup - besser in den Funktionen, die dadurch aufgerufen werden "return true" zurueckgibt. Bei onMousemove hingegen muss das unbedingt "return false" sein. Mir war allerdings bei onMousedown auch ein "return false" reingerutsch, was natuerlich alles folgende, also auch die Links abgeschalten hat. Gibt man bei onMousemove eine true zurueck, wird unweigerlich die Funktion nach dem ersten Move abgebrochen. Die Folge ist eventuell ein nicht korrekte Ausfuehrung von onMouseup. Dabei entsteht dann der Effekt,dass die Dragfunktion noch funktioniert, obwohl man die Maus nichtmehr gedrueckt haelt. Das nur prinzipiell zu dem Problem.
Viele Gruesse, Thomas Hieck
Der Fehler lag wirklich in einem falschem return Wert. Will man eine solche Dragfunktion einbauen, muss man darauf achten, dann man bei onMousedown und onMouseup - besser in den Funktionen, die dadurch aufgerufen werden "return true" zurueckgibt.
Nur warum ging es dann beim IE? Heisst das, der Rueckgabewert ist eigentlich gar nicht so wichtig, oder etwa, das dies auf Patricks IE-Hasser-Page gehoert, weil er's falsch macht?
Gibt man bei onMousemove eine true zurueck, wird unweigerlich die Funktion nach dem ersten Move abgebrochen. Die Folge ist eventuell ein nicht korrekte Ausfuehrung von onMouseup. Dabei entsteht dann der Effekt,dass die Dragfunktion noch funktioniert, obwohl man die Maus nichtmehr gedrueckt haelt.
Den Zusammenhang verstehe ich nicht. In <../../tebj.htm#a16> steht leider nichts dazu. Welche Funktion meinst Du, die da abgebrochen wird? Du willst uns ja das Ergebnis leider erst in ein paar Wochen zeigen. :-(
Calocybe