Krissi: Kontextmenü mit linker Maustaste anzeigen

Hallo,
ich suche nach einer Möglichkeit, wie man mit einem Linksklick auf einen Link das Kontexmenü angezeigt bekommt, welches normalerweise bei einem Rechtsklick erscheint. Ist sowas machbar?
Danke im Vorraus und schöne Grüße!
Krissi

  1. Hallo Krissi,

    ich suche nach einer Möglichkeit, wie man mit einem Linksklick auf einen Link das Kontexmenü angezeigt bekommt, welches normalerweise bei einem Rechtsklick erscheint. Ist sowas machbar?

    1. Ist es sehr unwahrscheinlich, dass du oder dein Besucher das möchte.

    2. Ist es sehr unwahrscheinlich, dass du es mit JavaScript hinbekommst.

    3. Ist es ausgeschlossen, dass PHP dir da hilft.

    4. Möchtest du dir klar machen, dass PHP eine serverseitige Sprache ist, die keinerlei Einfluss auf den Client, der die Daten empfängt nehmen kann.

    Grüße aus Barsinghausen,
    Fabian

    1. hallo Fabian,

      1. Ist es sehr unwahrscheinlich, dass du oder dein Besucher das möchte.

      Krissi will es offenbar, als Besucher der Seite würde ich es aber absolut nicht wollen.

      1. Ist es sehr unwahrscheinlich, dass du es mit JavaScript hinbekommst.

      Nö. Es gibt ein nettes Beispiel, wie es mit der _rechten_ Maustaste funktioniert unter http://www.jjam.de/JavaScript/Navigation/KontextMenue.html. Mit zwei kleinen Veränderungen im Script kannst du tatsächlich ein individuelles Kontextmenü für die linke Maustaste bauen  -  ich habs eben mal überprüft, das einzige, was ich auf die Schnelle nicht hinbekommen habe, war, das Menü wieder verschwinden zu lassen  -  hab auch keine Lust, lange darüber nachzudenken.

      1. Ist es ausgeschlossen, dass PHP dir da hilft.

      Jaein. Wenn PHP solchen Javascript-Code erzeugt und an den Browser liefert, funktioniert es, wenn eben auch mit "Umweg".

      Grüße aus Berlin

      Christoph S.

        1. Ist es ausgeschlossen, dass PHP dir da hilft.
          Jaein. Wenn PHP solchen Javascript-Code erzeugt und an den Browser liefert, funktioniert es, wenn eben auch mit "Umweg".

        dann kann ich aber auch im einem Kugelschreiber fahren, ich muss nur
        ein Auto hinten dranhängen...

        1. hallo,

          dann kann ich aber auch im einem Kugelschreiber fahren, ich muss nur ein Auto hinten dranhängen...

          Ja, und was hindert dich daran?

          Grüße aus Berlin

          Christoph S.

          1. dann kann ich aber auch im einem Kugelschreiber fahren, ich muss nur ein Auto hinten dranhängen...
            Ja, und was hindert dich daran?

            ich habe erst meine zweite Fahrstunde hinter mir (meine Mama
            schon ihre vierte, die wird glatt noch schneller fertig als ich
            *grummel*)

      1. Hallo Christoph,
        danke erstmal, für deine Antwort, aber ich will das StandardKontexmenü des Browsers öffnen. Genau wie unter 3.tens beschrieben werd ich es auch machen, wenn ich denn eine Lösung finde ;-)
        Krissi

        hallo Fabian,

        1. Ist es sehr unwahrscheinlich, dass du oder dein Besucher das möchte.
          Krissi will es offenbar, als Besucher der Seite würde ich es aber absolut nicht wollen.
        1. Ist es sehr unwahrscheinlich, dass du es mit JavaScript hinbekommst.
          Nö. Es gibt ein nettes Beispiel, wie es mit der _rechten_ Maustaste funktioniert unter http://www.jjam.de/JavaScript/Navigation/KontextMenue.html. Mit zwei kleinen Veränderungen im Script kannst du tatsächlich ein individuelles Kontextmenü für die linke Maustaste bauen  -  ich habs eben mal überprüft, das einzige, was ich auf die Schnelle nicht hinbekommen habe, war, das Menü wieder verschwinden zu lassen  -  hab auch keine Lust, lange darüber nachzudenken.
        1. Ist es ausgeschlossen, dass PHP dir da hilft.
          Jaein. Wenn PHP solchen Javascript-Code erzeugt und an den Browser liefert, funktioniert es, wenn eben auch mit "Umweg".

        Grüße aus Berlin

        Christoph S.

      2. Hallo Christoph,

        1. Ist es sehr unwahrscheinlich, dass du oder dein Besucher das möchte.
          Krissi will es offenbar, als Besucher der Seite würde ich es aber absolut nicht wollen.

        Korrekt. Ich bin hier bei meiner Aussage allerdings davon ausgegangen, dass Krissi möchte, dass die Seiten ihren Besuchern zusagen...

        1. Ist es sehr unwahrscheinlich, dass du es mit JavaScript hinbekommst.
          Nö. Es gibt ein nettes Beispiel, wie es mit der _rechten_ Maustaste funktioniert unter http://www.jjam.de/JavaScript/Navigation/KontextMenue.html. Mit zwei kleinen Veränderungen im Script kannst du tatsächlich ein individuelles Kontextmenü für die linke Maustaste bauen  -  ich habs eben mal überprüft, das einzige, was ich auf die Schnelle nicht hinbekommen habe, war, das Menü wieder verschwinden zu lassen  -  hab auch keine Lust, lange darüber nachzudenken.

        Ich denke nicht, dass das browserübergreifend (u.A. wegen den verschiedenen Implementationen des DO-Event-Modells) sher sinnvoll wäre. Aber gut, wenn Krissi das so möchte...

        1. Ist es ausgeschlossen, dass PHP dir da hilft.
          Jaein. Wenn PHP solchen Javascript-Code erzeugt und an den Browser liefert, funktioniert es, wenn eben auch mit "Umweg".

        Wie SCNR schon gesagt hat, was auf dem Server passiert spielt für die Problemstellung garkeine Rolle. Ob auf dem Server ein CGI, das in PERL ist, läuft, der PHP-Interpreter ein Script ausführt, das das Javascript erzeugt, oder der BSD-Deamon selbst codet ist völlig egal. Ich wollte hiermit schlicht nur sicherstellen, dass niemand auf die Idee kommt, dass PHP irgendeinen Einfluss auf das Dokument haben kann, das sich schon im Browser befindet.

        Grüße aus Barsinghausen,
        Fabian

    2. Hallo Fabian!
      Wie gesagt, hab mich vertan, natürlich meinte ich JavaScript.
      Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...
      Vielleicht gibts ja noch einen anderen Weg. Was meinst du?
      Krissi

      1. Hallo Krissi,

        Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...
        Vielleicht gibts ja noch einen anderen Weg. Was meinst du?

        Wenn Du den Content-Type für die Übertragung von PDF-Dateien auf
        application/octet-stream änderst (geht via .htaccess), dann wird
        die Datei nicht im Browser geöffnet, sondern zum Download
        angeboten.

        Bye,
        Peter

        1. Hallo Peter,
          war da nicht was, das der IE(welcher nun ja doch leider der meistgenutzte Browser ist) den Mime Type von Server ignoriert?
          Krissi

          Hallo Krissi,

          Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...
          Vielleicht gibts ja noch einen anderen Weg. Was meinst du?

          Wenn Du den Content-Type für die Übertragung von PDF-Dateien auf
          application/octet-stream änderst (geht via .htaccess), dann wird
          die Datei nicht im Browser geöffnet, sondern zum Download
          angeboten.

          Bye,
          Peter

          1. Hallo Krissi,

            war da nicht was, das der IE(welcher nun ja doch leider der meistgenutzte Browser ist) den Mime Type von Server ignoriert?

            Stimmt, das tut er ab und zu völlig unmotiviert und meist auch unreproduzierbar.

            Eine Methode die _oft_ funktioniert ist neben dem Content-Type-Header auch den (ich sagte es bereits) Content-Disposition-Header zu senden.

            Grüße aus Barsinghausen,
            Fabian

            1. Gut, dann werd ich das mal ausprobieren, auch wenn ich gerade keinen blassen Dunst hab, was ein Content-Disposition-Header sein soll. Aber ich werd mich mal durchgooglen :-)
              Danke für deine Hilfe!
              Krissi

              Hallo Krissi,

              war da nicht was, das der IE(welcher nun ja doch leider der meistgenutzte Browser ist) den Mime Type von Server ignoriert?

              Stimmt, das tut er ab und zu völlig unmotiviert und meist auch unreproduzierbar.

              Eine Methode die _oft_ funktioniert ist neben dem Content-Type-Header auch den (ich sagte es bereits) Content-Disposition-Header zu senden.

              Grüße aus Barsinghausen,
              Fabian

      2. Hallo Krissi,

        Wie gesagt, hab mich vertan, natürlich meinte ich JavaScript.

        Sorry dann. Aber du kennst ja sicher die unglückliche Geschichte mit meiner Kristallkugel ;-)

        Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...

        Eine andere Möglichkeit wäre, ihn einfach darauf hinzuweisen.

        Ausserdem kannst du ja auch einen Content-Disposition-Header vor dem Ausliefern des PDF senden, damit der Browser auf jeden Fall den Speichern-Dialog anzeigt.

        Grüße aus Barsinghausen,
        Fabian

        1. Hallo Krissi,

          Wie gesagt, hab mich vertan, natürlich meinte ich JavaScript.

          Sorry dann. Aber du kennst ja sicher die unglückliche Geschichte mit meiner Kristallkugel ;-)

          Nöö... kenn ich nicht ... Aber ich kanns mir vorstellen :-)
          »

          Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...

          Eine andere Möglichkeit wäre, ihn einfach darauf hinzuweisen.

          Ja, aber das lesen doch die wenigsten und nachher ärgern sie sich, das sich nix tut.

          Ausserdem kannst du ja auch einen Content-Disposition-Header vor dem Ausliefern des PDF senden, damit der Browser auf jeden Fall den Speichern-Dialog anzeigt.

          Ich meine da wär was gewesen, das der IE das ignoriert, und da das der meist genutzteste Browser ist suche ich eine andere Lösung.

          Grüße aus Barsinghausen,
          Fabian

          1. hi,

            Eine andere Möglichkeit wäre, ihn einfach darauf hinzuweisen.
            Ja, aber das lesen doch die wenigsten und nachher ärgern sie sich, das sich nix tut.

            dafür könntest du mittels onclick im jeweiligen link ein confirm() machen, dass den user auf die sache hinweist, und ihn auffordert OK oder ABBRECHEN zu drücken, um die pdf-datei wirklich im browser anzuzeigen (OK) oder lieber manuell den rechtsklick zu nehmen (nach dem ABBRECHEN).

            gruss,
            wahsaga

      3. Hallo Fabian!
        Wie gesagt, hab mich vertan, natürlich meinte ich JavaScript.
        Mein Problem ist, das ich eine Seite habe von der aus sehr große PDFs verlinkt sind. Wenn man das mit dem Linksklick draufklickt, dauert es ewig bis sich was tut, deshalb wärs besser, wenn der Benutzer diese erst runterlädt und sich dann anguckt. Deshalb das Kontextmenü...
        Vielleicht gibts ja noch einen anderen Weg. Was meinst du?
        Krissi

        Möglicherweise passt das nicht ganz in den Programmierer-Bereich, aber um die von dir gewünschte und natürlich userfreundlichere Lösung zu erreichen würde ich das ganze einfach als zip packen und so zum Download anbieten. (Nicht erschrecken wenn sich an der Dateigröße nicht alzuviel ändert)

        Ist mir klar das dies möglicherweise als unsauber angesehen wird, jedenfalls würde das Umarbeite nicht lange dauern und der User kann sich selbst aussuchen was er möchte.

        lg

  2. Hallo Krissi

    Machbar ist eigentlich alles aber nicht mit php und nicht ohne in die Struktur deines Browsers einzugreifen!

    gruß roox

    1. Ach, ich meinte ja auch gar nicht PHP, sondern JavaScript. Hab ich mich vertan...

      Hallo Krissi

      Machbar ist eigentlich alles aber nicht mit php und nicht ohne in die Struktur deines Browsers einzugreifen!

      gruß roox

  3. hi,

    in Wirklichkeit willst du nur das:

    <?php
      header("Content-type: application/pdf");
      header("Content-Disposition: attachment; filename=downloaded.pdf");
      readfile('original.pdf');
    ?>

    und zwar das bei einem Klick auf den Link der PDF-Datei nicht die
    Datei geöffnet wird sondern der Dialog für den Dateidownload
    erscheint.

    Obiges Beispiel öffnet die Datei 'original.pdf' und sagt dem
    Client (IE, NN,..) das die Datei heruntergeladen wird und das
    sie "downloaded.pdf" heißen soll.

    Das heißt du nimmst das Beispiel machst damit ein Script das zB.:
    get.php heißt. Dann verlinkst du alle PDF auf das Script und
    übergibst den Dateinamen zB.: get.php?file=original.pdf. Außerdem
    mußt du noch die letzte Zeile ändern damit der Parameter übernommen
    wird. zB.: "readfile($_GET['file']);" und alles wird gut.

    Besser wäre natürlich noch du prüfst vorher ob die Datei existiert
    und ob sie überhaupt heruntergeladen werden darf usw.. aber so sieht
    deine Ausgangsposition aus.

    Mehr Infos über Header und Readfile gibts hier, das Bsp ist übrigens
    auch dort zu finden:

    http://www.php.net/manual/en/function.header.php
    http://www.php.net/manual/en/function.readfile.php

    schöne Grüße
    FICHTL

    1. Hallo FICHTL
      Jau, das hört sich gut an. Werd ich mal ausprobieren.
      DANKE
      Krissi