Joachim: Kontextmenü / Rechtsklick

Hallo!

Leider weiss ich nicht, in welche Rubrik dies wirklich gehört - ich vermute "JAVASCRIPT", vielleicht sogar "JAVA" ... naja.

Das Problem:
In einer Table mit N x M Zeilen / Spalten ("Matrix") ist in (fast) jeder Zelle ein Image eingeblendet, das mit einer MAP und diversen Links unterlegt ist.

Ich hätte gerne die Funktionalität, mit einem Rechtsklick auf eines der Images ein Kontextmenü zu öffnen (sowas wie: Einfügen/Ändern/Löschen) und abhängig von der ausgewählten Funktion UND dem angeklickten Image (bzw dessen "Koordinate" in der Matrix) eine weitere Page (JSP) aufzurufen und der die Funktion und "Koordinate" mitzuteilen.

Die Idee ist, in die Matrix neue Images einzufügen (und die Matrix-Page anschliessend neu dynamisch aufzubauen).

Die Fragen:
* ist das möglich?
* mit welchen Mitteln (css/js/jsp/...)
* irgentwelche Dokumentations-/Literaturtips?
* ggf Angebot?

Joachim

  1. hi,

    Leider weiss ich nicht, in welche Rubrik dies wirklich gehört - ich vermute "JAVASCRIPT", vielleicht sogar "JAVA" ... naja.

    Eigentlich gehört es in die Rubrik "Don't do that".

    Ich hätte gerne die Funktionalität, mit einem Rechtsklick auf eines der Images ein Kontextmenü zu öffnen

    Ja, das mag einem manchmal bei oberflächlicher Betrachtung als recht nettes Feature erscheinen - für den Einsatz im www taugt es aber wenig bis gar nicht.
    Der Nutzer _erwartet_ beim rechtsklick sein _gewohntes_ Kontextmenü seines Browsers - wenn du daran etwas änderst, brichst du also schon mal mit dem dem Nutzer vertrauten Interface.
    Und gerade weil mit solchen Sachen in der Vergangenheit zu viel Schabernack getrieben wurde (oder auch irgendwelche Deppmaster das erscheinen des Kontextmenüs einfach ganz zu unterbinden versucht haben, damit man ihre "wertvollen Bilder nicht klauen" können sollte), erlauben moderen Browser, dieses Javascript-Feature (als Antwort auf deine weitere Frage, mit welcher Technik man so etwas theoretisch machen könnte) gezielt zu deaktivieren - also selbst wenn du solch ein eigenes Kontextmenü erstellst, gäbe es eine Anzahl Nutzer, die es mit ihren üblichen Einstellungen nicht zu sehen bekommen würde. Damit deine Seite nutzbar bleibt, müsstest du an der Stelle also sowieso noch eine Alternative dazu einbauen - aber dann kannst du dir eigentlich auch gleich eine "ordentliche" solche ausdenken, und diese als Standard nutzen, oder?

    Und, noch ein gewichtiges Argument dagegen: Ein Mac-Nutzer hat auf seiner Maus gar keine linke und rechte Taste (ja ja, die müssen sparen, die armen ...) - wie also sollte der dein Menü dann nutzen, wenn du hinschreibst "bitte mit rechts klicken, um ..."?

    Die Fragen:
    * ist das möglich?

    Theoretisch ja, praktisch ist eher abzuraten - siehe oben.

    * mit welchen Mitteln (css/js/jsp/...)

    Javascript und CSS.
    Der Eventhandler onRightclick zum reagieren auf dieses Ereignis ist nicht standardisiert, für andere Browser als den IE musst du dann also u.U. noch weitere Klimmzüge machen.
    Wenn du es dann geschafft hättest, auf diesen Klick zu reagieren, könntest du mittels CSS (und JS) dynamisch ein eigenes, in HTML erstelltest "Menü" an dieser Stelle anzeigen lassen - wobei du dafür zunächst die Position des Mauszeigers vermutlich auch erst noch ermitteln müsstest.
    Kein ganz triviales Unterfangen also, aber ...

    * irgentwelche Dokumentations-/Literaturtips?

    ... im www sollten sich sicher fertige Scrfipte für sowas finden lassen, falls du es mal ausprobieren möchtest.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      das mag einem manchmal bei oberflächlicher Betrachtung als recht nettes Feature erscheinen - für den Einsatz im www taugt es aber wenig bis gar nicht.

      Ist auch ein nettes Feature bei speziellen Webanwendungen. Die Fragestellung spricht wohl von einer solchen komplexen DHTML-Anwendung, keiner gewöhnlichen Webseite.

      Die Fragen:
      * ist das möglich?

      Theoretisch ja, praktisch ist eher abzuraten - siehe oben.

      Joachim müsste sein jetziges Modell wohl genauer geschreiben, bevor man ihm zu einer bestimmten technische Lösung raten könnte.

      * mit welchen Mitteln (css/js/jsp/...)

      Javascript und CSS.
      Der Eventhandler onRightclick zum reagieren auf dieses Ereignis ist nicht standardisiert, für andere Browser als den IE musst du dann also u.U. noch weitere Klimmzüge machen.

      Naja, erst einmal könnte man ganz einfach onmousedown-Events abfragen und die gedrückte Maustaste in Erfahrung bringen. onrightclick ist schon sehr speziell.
      Im Übrigen ist die optimale Lösung die Nutzung von oncontextmenu und alternativ onmousedown. Siehe auch http://de.selfhtml.org/navigation/anzeige/rechte_maustaste.htm.

      Mathias

  2. Erstmal Danke für die Antworten.

    Zur Erläuterung: ich habe das Vergnügen, eine sehr spezialiserte, webbasierte Anwendung zu erstellen, zu der ich die Rahmenbedingungen weithin frei definieren kann. So kann ich den Browser vorschreiben, den HTTP-Server, die Datenbank, sogar das Betriebssystem des Clients, usw.

    Die Sache mit dem Rechtklick-Menü würde es dem Anwender auf sehr bequeme Weise erlauben, in die (Daten)Matrix eine Zelle einzufügen bzw Änderungsoperationen auf den Daten der Zelle zu machen oder sie zu löschen. Da die Zellen realtiv klein sind (130x80px) und schon eine ganze Serie von Links beinhalten, würde ich die Edit-Funktionen gerne "anders" zur Verfügung stellen - eben per Kontextmenü.

    Ein Rechtsklick-Menü habe ich schon irgentwo gefunden; nur müßte natürlich die Information, welche Zelle denn angeklickt wurde, mit an die behandlende JSP gesendet werden. Und um ein Applet würde ich mich gerne rumdrücken; bislang ging alles mit *HTML/JS.

    Daher die ursprüngliche Frage.

    Joachim

    1. Ein Rechtsklick-Menü habe ich schon irgentwo gefunden; nur müßte natürlich die Information, welche Zelle denn angeklickt wurde, mit an die behandlende JSP gesendet werden. Und um ein Applet würde ich mich gerne rumdrücken; bislang ging alles mit *HTML/JS.

      Du kannst mit den üblichen Eventhandlern durchaus herausfinden von wo der Klick kam.

      Struppi.