Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Browser-Popup Fenster mit rechter Maustaste

Mitglied: zoro17

zoro17 (Level 1) - Jetzt verbinden

27.12.2007, aktualisiert 28.12.2007, 6715 Aufrufe, 8 Kommentare

Hallo zusammen,

hoffe, Ihr hattet soweit schöne Weihnachten. Sie sind leider rum und die täglichen "wichtigen" Fragen tauchen wieder auf

Ich bin am Entwickeln einer Web-Applikation mit Grundwerkzeugen (Javascript/PHP/ASP...).
Da ich möglichst nahe am Erscheinungsbild der Desktop-Applikationen bleiben will, möchte ich das Browser-Menü der rechten Maustaste
selber steuern können. Da ich schon einiges an Javascript und CSS in den Dateien habe, wäre es mir am liebsten, wenn
ich mit der rechten Maustaste ein Popup-Fenster öffnen könnte, dass mein eigenes Menü enthält.

Da der Inhalt des Menüs abhängig davon ist, an welcher Stelle die rechte Maustaste auf der Seite gedrückt wurde, brauche ich eine
gewisse Dynamik bzgl. des Menü-Inhaltes.
Eine statische CSS-Lösung für die Maustaste habe ich schon ( http://chaoslayer.de/-%20test%20-/events.html ), die bringt mich jedoch nur bedingt weiter.

Hat jemand eine Idee?
Vielen Dank für Euer Feedback und Guten Rutsch.
Gruss

Ich vergaß vielleicht zu sagen, dass die Popup-Blocker wahrscheinlich ein Problem hierbei sind. Ein "window.open" bei normalem
Klick ist ja möglich. Ich bräuchte das eben mit der rechten Maustaste. Oder vielleicht doch dynamisches CSS, falls das geht?
Mitglied: Cubic83
27.12.2007 um 22:04 Uhr
Hallo,

das ist so schwer zu sagen.

Entweder Du baust dein Menü dynamisch mit Javascript auf oder du benutzt AJAX um sie zu generieren.

Popup Blocker werden keine Probleme bereiten wenn du mit DIV-Popups arbeitest.

mfG
Bitte warten ..
Mitglied: zoro17
27.12.2007 um 22:09 Uhr
hallo Cubic83,
vielen dank für deine nachricht. weisst du mehr über DIV-Popups? meinst du div-tags, um sie
mittels ajax zu füllen? wäre nicht schlecht, da ich kein css mehr benutzen will, da die seite
schon so viel hat.
gruss
Bitte warten ..
Mitglied: Cubic83
28.12.2007 um 11:25 Uhr
hallo,

das hat nicht wirklich direkt was mit CSS zu tun.

Zunächst musst Du dein Popup designen. Mit oder ohne CSS.
Jetzt hast Du mehrere Möglichkeiten.

1) AJAX
2) Nur Javascript

Auf jeden Fall brauchst Du in der Seite dann:

01.
      <div id="MEINDIVPOPUP" style="visibility:hidden"></div>


Für 1:


Du speichers das Popupdesign als POPUP.PHP ab. In dieser POPUP.PHP wird dann das Popup anhand der Parameter aufgebaut. (Die POPUP.PHP wird ja Parameter empfangen die per GET oder POST ausgelesen werden
können). Das Resultat schreibst Du dann in den <div> Container. Das sieht dann so aus:

01.
 
02.
function GetPopUp() { 
03.
 
04.
var External = null; 
05.
 
06.
if (typeof XMLHttpRequest != 'undefined') { External = new XMLHttpRequest(); } 
07.
   
08.
if (!External) { 
09.
    try { 
10.
	External  = new ActiveXObject("Msxml2.XMLHTTP"); 
11.
    } catch(e) { 
12.
       try { 
13.
           External  = new ActiveXObject("Microsoft.XMLHTTP"); 
14.
       } catch(e) { 
15.
          External  = null; 
16.
17.
18.
19.
		 
20.
if (External) { 
21.
     External.open('GET', './POPUP.PHP?a=1&b=2', true); 
22.
     External.onreadystatechange = function () { 
23.
     if (External.readyState == 4) { 
24.
        document.getElementById('MEINDIVPOPUP').innerHTML = External.responseText; 
25.
26.
}; 
27.
External.send(null); 
28.
29.
 
30.
document.getElementById('MEINDIVPOPUP').style.visibility = 'visible'; 
31.
32.
 
33.
<a href="#" onRightClick="GetPopUp()">Link</a> 
34.
 
External.open('GET', './POPUP.PHP?a=1&b=2', true);

Die Parameter für die Variablen a und b übergibts Du dann an die Funktion GetPopUp(). Man lädt also die Ausgabe der PHP Seite "live" in den Div container hinein. Und das bei jedem Aufruf der Datei.


Für 2:


Du schreibst die Tabelle gleich in den Quellcode der Hauptseite rein:

01.
 
02.
<div id="MEINDIVPOPUP" style="visibility:hidden"> 
03.
 
04.
   <table> 
05.
      <tr> 
06.
          <td><div id="ITEM1"></div></td> 
07.
      </tr> 
08.
      <tr> 
09.
         <td><div id="ITEM2"></div></td> 
10.
      </tr> 
11.
   </table> 
12.
           
13.
 
14.
</div> 
15.
 
Um dann mittels Javascript die innerHTML-Werte von ITEM1 und ITEM2 on the Fly zu generieren.

01.
 
02.
function GetPopUP(a, b) { 
03.
   document.getElementById('ITEM1').innerHTML = '<a href="meinlink?a=' + a + '&b=' + b">Eintrag 1</a>'; 
04.
   document.getElementById('ITEM2').innerHTML = '<a href="meinlink?a=' + a + '&b=' + b">Eintrag 2</a>'; 
05.
06.
 

Wie gesagt ist schwer etwas vorzuschlagen wenn mann die Richtung nicht weiss. Was genau willst Du denn anzeigen? Kannst Du mal ein Beispiel geben?

mfG
Bitte warten ..
Mitglied: zoro17
28.12.2007 um 12:30 Uhr
hallo Cubic83,
vielen dank für deine antwort. ist ja toll, gleich mit code!
was ich mit der rechten maustaste möchte? etwa das gleiche, was man in einer desktop-anwendung
eben so hat. d.h. abhängig von dem objekt, über dem die rechte maustaste gedrückt wird, soll
ein kontextmenü erscheinen, dass zusätzlich funktionen einblendet, die das objekt besitzt.
so ähnlich, wie es in entwicklungsumgebungen wie eclipse oder anderen ist.

beispiel: bei mir geht es hier geht es um eine datenbankanwendung. die ergebnisse einer
db-abfrage werden in einer baumstruktur mit links angezeigt. so soll z.b. es an den knotenpunkten
nicht möglich sein, alle datensätze darunter zu löschen. jedoch an den "blättern" soll die funktion
zum löschen des datensatzes im kontextmenü erscheinen.

ich könnte die ganzen objekt- bzw. link-abhängigen funktionen in ein normales popup-fenster packen,
ich sehe jedoch bei den anwendern immer mehr, dass sie das kontextmenü mit der rechten maustaste
nützen. dabei wird aber das original browser-kontextmenü kaum genützt.

hab mich gestern noch mit div-menüs beschäftigt. es geht schon in diese richtung. ich würde
gerne deine 2. möglichkeit (nur javascript) bevorzugen, da es nicht soviele
browserabhängigkeiten wie bei ajax gibt. jedoch, wenn ich es richtig verstanden habe, kann
ich die anzahl der menüpunkte nicht dynamisch aufbauen oder? (die tabelle mit ihren zeilen
muss schon in der seite stehen)

mein "traum" wäre es, wenn die rechte maustaste eine javascript funktion startet, die dann
mit window.open ein popup als "kontextmenü" öffnet, aber hier greifen die popup-blocker.
dieses menü ließe sich dann auch noch verschieben!
die koordinaten, wo die rechte maustaste gedrückt wurde, habe ich schon.

ich hoffe, es ist jetzt etwas klarer, was mir vorschwebt.
danke und gruss
Bitte warten ..
Mitglied: Cubic83
28.12.2007 um 13:54 Uhr
Also du kannst auch Tabellen dynamisch per Javascript zur Laufzeit verändern oder erstellen.

01.
var Tabelle = document.createElement("table");  
02.
 
03.
var TR = Tabelle.insertRow(0);  
04.
var TD1 = document.createElement("td");  
05.
 
06.
var TD1TEXT = document.createTextNode("<b>Hallo</b> Welt");  
07.
 
08.
TD1.appendChild(TD1TEXT);  
09.
 
10.
TR.appendChild(TD1);  
11.
 
So ungefähr würde das aussehen. Ich nehme aber dann doch immer lieber PHP anstatt Javascript.

Aber es geht natürlich auch beim OnRightClick-Event eine neue Tabelle zu erstellen. Nun kannst Du ja je nach Object beliebig viele Zeilen hinzufügen.

Du musst nur immer darauf achten dass die Objekte auch wirklich schon erstellt wurden, wenn Du darauf zugreifst. Ausserdem am Besten nach dem Schliessen das erstellte Objekt wieder löschen. (Was geschieht wenn der Benutzer nur ne Stunde Kontextmenüs öffnet? Die bleiben sonst die ganze Zeit im Speicher.)

Also persönlich finde ich window.open keine gute Idee. Wie Du selbst bereits gesagt hast, greifen die Popupblocker, die Fenster müssen dann extra positionniert werden, Fenstergrössen stimmen nicht immer, Du musst Fensterübergreifend programmieren, etc.

mfG
Bitte warten ..
Mitglied: zoro17
28.12.2007 um 14:04 Uhr
hallo Cubic83,
du hast recht. beeinflusse gerade mittels javascript/dom ein dropdown feld. das geht prima.
könnte tabelle anlegen und diese dann per dom verändern. kann man diese tabelle auch
positionieren?
wenn du php benutzt, musst du aber kurzzeitig den server bemühen oder?
glaube, bin jetzt nahe dran an dem, was ich wollte.
gruss
Bitte warten ..
Mitglied: Cubic83
28.12.2007 um 14:35 Uhr
Ja, der Server wird kurzzeitig bemüht. Ich habe auch nicht gesagt, dass es eine gute Methode ist ;) Aber ich bin etwas Javascript faul ;)

01.
 
02.
function MoveTableTo(tbl, x, y) { 
03.
   tbl.style.visibility = "visible"; 
04.
   tbl.style.left = x; 
05.
   tbl.style.top = y; 
06.
   tbl.style.position = "absolute"; 
07.
08.
 
Ist aber jetzt ungetestet .

mfG
Bitte warten ..
Mitglied: zoro17
28.12.2007 um 14:51 Uhr
vielen dank! hab auch schon etwas recherchiert. geht in die gleiche richtung.
das werde ich wohl benutzen. glaube, das ich damit die rechte maustaste gut bedienen kann.
guten rutsch!
gruss
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Popup Fenster erstellen
gelöst Frage von TripleFloVB for Applications19 Kommentare

Hallo zusammen, Ich hätte da mal eine Frage. Ich bin kein Spezialist in Sachen programmieren und würde dennoch gerne ...

Windows 8

W 8.1 bei User rechte Maustaste ohne Funktion

gelöst Frage von blue0711Windows 83 Kommentare

Hallo, ich habe gerade ein paar Surface Pro 3 in W2K12-Domänen-Umgebung in Arbeit und nun folgendes Phänomen: Bei einem ...

Peripheriegeräte

Doppelklick auf rechte bzw. linke Maustaste legen

gelöst Frage von chrisiweberPeripheriegeräte13 Kommentare

Hallo Zusammen, ich hab hier einen für mich etwas speziellen Fall. Ein Kunde möchte auf der rechten Maustaste einen ...

Windows 7

Rechte Maustaste auf Startbutton unter Windows 7 verhindern

Frage von MPFGWindows 73 Kommentare

Hallo, ich such unter Windows 7 (32bit) eine Möglichkeit, das Kontexmenü vom Startbutton (rechte Maustaste) nicht anzuzeigen. Hat jemand ...

Neue Wissensbeiträge
Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 1 TagHumor (lol)2 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 1 TagAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 1 TagVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Netzwerke
Riesiges Botnetz in Deutschland
Tipp von FFSephiroth vor 1 TagNetzwerke1 Kommentar

Überprüft mal eure Router und NAS

Heiß diskutierte Inhalte
Voice over IP
VOIP: Lösungen für Notruf?
Frage von MimemmmVoice over IP26 Kommentare

Hey Welche Möglichkeiten hat man eigentlich noch bei VOIP um zuverlässige Notrufe zu ermöglichen? Ein aufgeladenes Handy habe ist ...

Windows Server
Fragwürdige GPO Fehler im Syslog
gelöst Frage von Ex0r2k16Windows Server13 Kommentare

Hallo! Ich kriege bei manchen (oder sogar allen? -prüfe noch) Clients folgenden Fehler bei mehreren GPOs (aber nicht bei ...

Windows Server
DHCP und Regeln und Filter
Frage von OlliPWSWindows Server10 Kommentare

Guten Tag, wir haben folgende Problematik: Wir haben diverse ca. 130 Avaya VoIP Telefone, diese sollen per DHCP automatisch ...

Windows Server
Nach KB4103718 RDP auf Windows 2003 Server
gelöst Frage von Bl0ckS1z3Windows Server9 Kommentare

Hallo Admins, im KB4103718 ist ja der Patch für den RDP-Server und Client enthalten. Wir haben aber noch Windows ...