Kontextmenü mit linker Maustaste anzeigen
Krissi
- php
0 Fabian Transchel0 roox0 Krissi
0 FICHTL0 Krissi
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
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
hallo Fabian,
- 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.
- 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.
- 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.
- 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...
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.
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*)
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,
- 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.
- 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.
- 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.
Hallo Christoph,
- 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...
- 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...
- 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
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
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
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
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
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
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
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
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
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
Hallo Krissi
Machbar ist eigentlich alles aber nicht mit php und nicht ohne in die Struktur deines Browsers einzugreifen!
gruß roox
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
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
Hallo FICHTL
Jau, das hört sich gut an. Werd ich mal ausprobieren.
DANKE
Krissi