Mark Webcaster: Kncontextmenü ausschalten und im Textfeld wieder einschalten

Hallo zusammen

ich erarbeite mir hier eine Seite mit einem Formular,  in disem das Kontextmenü gesperrt sein soll. Gerne lasse ich es auf der sonstigen Seite anzeigen, doch hier bitte nicht.

Doch wäre es schon toll wenn ein Kontextmenü für den Inhalt der Eingabefelder zur Verfügung stehen würde.

Also wie scvhlate ich es aus und für die Textfelder wieder ein?

Ausgeschaltet wird es bereits in dem ich in den body Tag oncontextmenu="return false" reinschreibe.

OK Vielen Dank für Eure Hilfe

Mark WebCaster

  1. Lieber Mark Webcaster,

    mit einem Formular,  in disem das Kontextmenü gesperrt sein soll.

    warum?

    Gerne lasse ich es auf der sonstigen Seite anzeigen, doch hier bitte nicht.

    Warum?

    Ich frage deshalb nach dem Warum, weil ich mir nicht sicher bin, dass Dein Vorgehen die sinnvollste Lösung für Dein eigentliches Anliegen (nämlich das Warum) ist.

    Doch wäre es schon toll wenn ein Kontextmenü für den Inhalt der Eingabefelder zur Verfügung stehen würde.

    Ist das nicht ein Widerspruch? Du willst das Kontextmenü im Formular zwar grundsätzlich verbieten, für Eingabefelder aber wieder zulassen... Daher nochmal:

    Warum??

    Ausgeschaltet wird es bereits in dem ich in den body Tag oncontextmenu="return false" reinschreibe.

    Du weißt, dass man JavaScript deaktivieren kann und dass damit das Kontextmenü wieder fröhlich überall verfügbar wird?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Jo JO Hallo

      Grundsätzlich hast du ja schon Recht. Aber das Formular ist schon sehr stylisch und aufwendig programmiert. Und es würde schon toll aussehen wenn man niergenst wo das Menü aufrufen könnte, so dass das aussehen würde wie ein Windows Dialosfeld. Es steht ja auch über der Seite. Und ist oncontextmenu im body tag auch wirklich JavaScript? Und wer schlatet Heut zu Tage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.

      Und dann wäre das KontextMenü auf der Fläche des Dialogfeldes gesperrt, aber in den Eingabefeldern freigegeben, um mit dem Inhalt umgehen zu könjnen, was ich ja verwirklichen will.

      OK auf jeden Fall Danke

      Mark WebCaster

      1. Hi,

        Aber das Formular ist schon sehr stylisch und aufwendig programmiert. Und es würde schon toll aussehen wenn man niergenst wo das Menü aufrufen könnte, so dass das aussehen würde wie ein Windows Dialosfeld. Es steht ja auch über der Seite.

        eben, es würde also genau so funktionieren, wie man es von anderen Webseiten und von anderen Anwendungen kennt und schätzt. Vergiss nicht, dass das Kontextmenü je nach Browser eine Menge nützlicher Funktionen bietet, die du dem Nutzer dann nimmst (oder ihn zwingst, die gewünschte Funktion auf eine für ihn weniger komfortable Weise zu erreichen).

        Und ist oncontextmenu im body tag auch wirklich JavaScript?

        Ja.

        Und wer schlatet Heut zu Tage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.

        Ich mache das zum Beispiel - weil man dann viel entspannter und nervenschonender surft, weil man von möglicherweise gutgemeinten, aber letzten Endes doch eher störenden Effekten verschont bleibt. Nur in wenigen Ausnahmefällen lasse ich Javascript für bestimmte Sites zu, wenn es wirklich nötig ist und ich die gesuchte Information nicht woanders bekomme.
        Viele Sites gewinnen dadurch sogar an Komfort, wenn man Javascript deaktiviert.

        So long,
         Martin

        --
        Ich stehe eigentlich gern früh auf.
        Außer morgens.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hi Martin!

          Und wer schaltet heutzutage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.

          Ich mache das zum Beispiel - weil man dann viel entspannter und nervenschonender surft, weil man von möglicherweise gutgemeinten, aber letzten Endes doch eher störenden Effekten verschont bleibt. Nur in wenigen Ausnahmefällen lasse ich Javascript für bestimmte Sites zu, wenn es wirklich nötig ist und ich die gesuchte Information nicht woanders bekomme.
          Viele Sites gewinnen dadurch sogar an Komfort, wenn man Javascript deaktiviert.

          Dem möchte ich mal entschieden widersprechen!

          Gerade heutzutage, in Zeiten von "responsive layouts" ist es (fast) nicht möglich, eine "ordentliche" (im Sinne von benutzerfreundlich) Seite ohne Javascript zu realisieren.

          Zum einen kommt man i.d.R. nicht ohne Manipulationen des DOMs im Bezug auf die Reihenfolge der Elemente aus, und zum anderen ist es häufig hilfreich bestimmte Seitenelemente wie bspw. Breadcrumbs oder TOC "anders zu verpacken/ auszuzeichnen" (bspw. als Select-Box).

          Mal ganz abgesehen von den diversen Bugs/ Fehlern der jeweiligen Browserversionen unter den verschiedenen OS, die man "wirkungsvoll" auch nur mittels Javascript in den Griff bekommt!

          Wenn eine Seite tatsächlich an "Komfort" gewinnt, wenn man JS deaktiviert, dann hat der Ersteller etwas falsch gemacht.

          Und solche "abstrusen" Vorhaben, wie vom OP hier, sehe ich daher äußerst kritisch. Denn solche völlig unnötigen Eingriffe in die Usability führen ggf. dazu, dass doch wieder mehr User JS deaktivieren. Und darunter "leiden" dann alle die, die es (unvermeidlicherweise) genau für den gegenteiligen Effekt einsetzen!

          Gruß Gunther

          1. Hallo,

            Und wer schaltet heutzutage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.
            Ich mache das zum Beispiel - weil man dann viel entspannter und nervenschonender surft, [...]
            Viele Sites gewinnen dadurch sogar an Komfort, wenn man Javascript deaktiviert.
            Dem möchte ich mal entschieden widersprechen!

            das darfst du gern tun; es ändert aber nichts daran, wie ich einen Großteil der Internet-Angebote empfinde. Ab und zu kommt es mal vor, dass ich an einem fremden Rechner sitze (Eltern, Freunde, Kunden) und einen Browser nutzen "muss", bei dem Javascript generell erlaubt ist. Und fast jedesmal empfinde ich das wieder als lästig und störend - sei es Auto-Suggest im Google-Eingabefeld, das automatische Nachladen von Inhalten, die ich noch gar nicht angefordert habe, das ungefragte Aufpoppen von Kästen mit ergänzender Information oder das Verstecken von Informationen, die ich ohne JS auf einen Blick bekomme, mit JS aber erst wieder durch einen Klick auf irgendwelche Buttons sichtbar machen muss. Lästig finde ich auch, wenn man den Mauszeiger kaum irgendwo stehenlassen kann, ohne dass mit kurzer Verzögerung ein Tooltip aufpoppt.

            Gerade heutzutage, in Zeiten von "responsive layouts" ist es (fast) nicht möglich, eine "ordentliche" (im Sinne von benutzerfreundlich) Seite ohne Javascript zu realisieren.

            Vielleicht, nein, sehr wahrscheinlich haben wir unterschiedliche Vorstellungen von "benutzerfreundlich".

            Zum einen kommt man i.d.R. nicht ohne Manipulationen des DOMs im Bezug auf die Reihenfolge der Elemente aus, und zum anderen ist es häufig hilfreich bestimmte Seitenelemente wie bspw. Breadcrumbs oder TOC "anders zu verpacken/ auszuzeichnen" (bspw. als Select-Box).

            Du redest hier von "responsive design" in dem Sinn, dass der Inhalt sinnvoll dem Anzeigemedium angepasst wird? - Das ist ein Anwendungsfall, den ich auch noch gutheiße. Vorausgesetzt, es ist so umgesetzt, dass es nicht auffällt.

            Mal ganz abgesehen von den diversen Bugs/ Fehlern der jeweiligen Browserversionen unter den verschiedenen OS, die man "wirkungsvoll" auch nur mittels Javascript in den Griff bekommt!

            Ach, tatsächlich?

            Wenn eine Seite tatsächlich an "Komfort" gewinnt, wenn man JS deaktiviert, dann hat der Ersteller etwas falsch gemacht.

            Ja. In der Regel hat er Javascript für Dinge verwendet, die entweder gar nicht erwünscht sind, oder die man angenehmer ohne Javascript hätte realisieren können.

            So long,
             Martin

            --
            Theorie ist, wenn jeder weiß, wie's geht, und es geht trotzdem nicht.
            Praxis ist, wenn's geht, und keiner weiß warum.
            Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß warum.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Hallo,

              Und fast jedesmal empfinde ich das wieder als lästig und störend - sei es Auto-Suggest im Google-Eingabefeld, das automatische Nachladen von Inhalten, die ich noch gar nicht angefordert habe, das ungefragte Aufpoppen von Kästen mit ergänzender Information oder das Verstecken von Informationen, die ich ohne JS auf einen Blick bekomme, mit JS aber erst wieder durch einen Klick auf irgendwelche Buttons sichtbar machen muss. Lästig finde ich auch, wenn man den Mauszeiger kaum irgendwo stehenlassen kann, ohne dass mit kurzer Verzögerung ein Tooltip aufpoppt.

              Interaktive Medien sind schon nervig, ja. Sie zeigen einen nicht sofort alle Informationen, sondern zeigen sie nur bei Bedarf und nach Anforderung. Ich muss immer irgendwo klicken, wenn ich was sehen will. Überall verbirgt sich noch mehr Information, es hat kein Ende. Das finde ich sehr lästig. Da lobe ich mir doch die guten alten Push-Medien. Zum Beispiel Zeitungen und illustrierte Magazine. Die kann ich abonnieren, kenne die Blattlinie und bekomme täglich oder wöchentlich Hausmannskost frei Haus geliefert. Druckerschwärze auf Totholz, da weiß man, was man hat. Da blitzt und blinkt nichts, da ist nichts versteckt, ergo poppt nichts beim Lesen auf. Da kann ich den gestressten Finger auch mal für einen Moment auf einer Kolumne ausruhen.

              Grüße,
              Mathias

              1. Hi,

                Und fast jedesmal empfinde ich das wieder als lästig und störend - sei es [...] Lästig finde ich auch, wenn man den Mauszeiger kaum irgendwo stehenlassen kann, ohne dass mit kurzer Verzögerung ein Tooltip aufpoppt.
                Interaktive Medien sind schon nervig, ja.

                meistens, ja. Das hat Interaktivität so an sich.

                Sie zeigen einen nicht sofort alle Informationen, sondern zeigen sie nur bei Bedarf und nach Anforderung.

                Nein, oft sogar schon ohne explizite Anforderung (ein zufälliges Hovern ist keine Anforderung).

                Da lobe ich mir doch die guten alten Push-Medien. Zum Beispiel Zeitungen und illustrierte Magazine. Die kann ich abonnieren, kenne die Blattlinie und bekomme täglich oder wöchentlich Hausmannskost frei Haus geliefert. Druckerschwärze auf Totholz, da weiß man, was man hat. Da blitzt und blinkt nichts, da ist nichts versteckt, ergo poppt nichts beim Lesen auf. Da kann ich den gestressten Finger auch mal für einen Moment auf einer Kolumne ausruhen.

                Genau. Und so hätte ich es auch gern im Internet. Oder im Supermarkt. Nichts ist beim Einkaufen lästiger als Leute, die an ihrem improvisierten Stand stehen und Kunden anlabern: "Möchten Sie gern mal unseren $name Joghurt probieren?" Vor allem dann, wenn sie nach einem höflichen, aber bestimmten "Nein, danke" nicht lockerlassen. Ich mag es generell nicht, wenn Menschen oder Maschinen mir mit irgendwelchen Angeboten auf den Senkel gehen, die ich nicht explizit angefordert habe - aber ich mag es ebensowenig, wenn ich trotz expliziter Anfrage die Information nur bröckchenweise bekomme.

                Ciao,
                 Martin

                --
                Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
                Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Mahlzeit,

        Und wer schlatet Heut zu Tage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.

        Mir fallen da spontan Ebay, Google und Amazon ein, die zumindest ohne Javascript benutzbar sind. Ok, das sin kleine, unbedeutende Seiten, die für dich unter "keine Seite" fallen, aber ich wollte es nur anmerken.

        --
        42
        1. Hallo,

          Und wer schlatet Heut zu Tage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.
          Mir fallen da spontan Ebay, Google und Amazon ein, die zumindest ohne Javascript benutzbar sind.

          ebay schon seit Jahren nicht mehr (das war für mich einer von mehreren Gründen, das Angebot nicht mehr zu nutzen), und amazon nur eingeschränkt - z.B. kann man ohne JS keine Rezensionen schreiben, bei manchen Produkten die Ausstattungsdetails nicht mehr wählen, und nur die Thumbnails der Abbildungen anschauen, nicht die "großen" Bilder, die mit JS beim Hovern eingeblendet werden.

          Ok, das sin kleine, unbedeutende Seiten, die für dich unter "keine Seite" fallen, aber ich wollte es nur anmerken.

          *g*  Klar, völlig unbedeutend. ;-)

          Ciao,
           Martin

          --
          Nicht jeder, der aus dem Rahmen fällt, war vorher im Bilde.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Mahlzeit,

            ebay schon seit Jahren nicht mehr

            Benutzbar schon noch, aber nicht schön und nicht im vollen Umfang. Das weiss ich deshalb, weil vor einigen Wochen irgendein Javascript ne Prozessorauslastung von 100% verursacht hat. Da war ich zeitweise ohne Javascript unterwegs ;)
            Aber Spass macht macht es nicht.

            --
            42
      3. Lieber Mark Webcaster,

        das Formular ist schon sehr stylisch und aufwendig programmiert. Und es würde schon toll aussehen wenn man niergenst wo das Menü aufrufen könnte, so dass das aussehen würde wie ein Windows Dialosfeld.

        Du hast ein hausgemachtes Problem, da Du mir auf Deiner Seite eine Windows-Umgebung simulieren willst (ich nutze kein Windows). Daher schlage ich vor, dass Du Dein hausgemachtes Schönheitsproblem selbst löst.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      4. Hallo,

        Aber das Formular ist schon sehr stylisch und aufwendig programmiert.

        Ohne dir nahetreten zu wollen, ich gehe mal davon aus, dass das jeder Gestalter von sich behauptet. Formulare müssen nicht »stylish« sein, sondern in erster Linie funktionieren. Formulare sind daher immer wieder Gegenstand der Usability-Forschung.

        Und es würde schon toll aussehen wenn man niergenst wo das Menü aufrufen könnte, so dass das aussehen würde wie ein Windows Dialosfeld. Es steht ja auch über der Seite.

        Ja, und?

        Wenn ich das Kontextmenü aktiviere, dann erwarte ich natürlich, dass es aussieht wie immer. Es ist notwendig, dass es aussieht wie immer und sich damit von der Seite abhebt. Es ist auch nicht Teil der Seite, sondern Teil des Browsers. Der Unterschied ist enorm wichtig bei der Bedienung eines Browsers.

        Dein stylisches Formular wird dadurch nicht schlechter, dass es das Kontextmenü gibt. Nutzer aktivieren es ohnehin nur, wenn sie es brauchen – wieso verwehrst du es ihnen? Aus ästhetischen Gründen? Ich glaube, da denkst du zu kurz.

        Und ist oncontextmenu im body tag auch wirklich JavaScript?

        Ja, natürlich. oncontextmenu="return false" erzeugt eine Funktion mit dem Body »return false« und speichert diese unter document.body.oncontextmenu. Es ist äquivalent zu der JavaScript-Anweisung document.body.oncontextmenu = function() { return false; };.

        Und wer schlatet Heut zu Tage noch JavaScript aus? Dann funktioniert doch keine Seite mehr.

        Das ist kein Argument dagegen, dass man mit JavaScript keinen Quatsch machen sollte.

        Grüße
        Mathias

  2. Hallo,

    Dass das Unterbinden des Kontextmenüs in der Regel keine gute Idee ist, da es den Nutzern wertvolle Funktionen im Umgang mit deiner Site raubt, wurde ja bereits erläutert. Zur technischen Erklärung:

    <body oncontextmenu="return false">

    … registriert einen dokumentweiten Event-Handler für das Ereignis contextmenu und unterdrückt die Standardaktion.

    contextmenu-Events steigen auf (Bubbling). Sie können von beliebigen Elementen im Dokument ausgeben (Ziel des Ereignisses, Event-Target). Wenn du sie beim body-Element überwachst, so kannst du das Zielelement prüfen und gewisse Elemente aus- bzw. einschließen, etwa anhand des tagNames. Nur wenn der Test bestanden wird, unterdrückst du die Standardaktion.

    Hintergrundlektüre:
    Grundlagen der Ereignisverarbeitung
    Arbeiten mit dem Event-Objekt
    Fortgeschrittene Ereignis-Verarbeitung
    Eigenschaften und Methoden von Elementknoten

    Ich wüsste allerdings nicht, wieso man hier ein komplexes Script schreiben sollte, dass letztlich das Nutzererlebnis nicht verbessert, sondern eher verschlechtert.

    Grüße
    Mathias