Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung Webentwicklung

Mitglied: zoro17

zoro17 (Level 1) - Jetzt verbinden

27.12.2007, aktualisiert 28.12.2007, 6516 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
RemoteApp Fenster kommt nicht in den Vordergrund (1)

Frage von thomasreischer zum Thema Windows Server ...

Virtualisierung
Projekt: Zugriff auf VM über Browser (11)

Frage von oemer.aydin zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...