![]() |
Drag and Drop im Webbrowser deaktivieren
Hallo Wissende,
ich habe leider das Problem, dass auf meinem Touchscreen, welcher Info-Html-Seiten anzeigt bestimmte Bilder bei einem versehentlichen Drag(gen) auf der gleichen Seite das alleinige Bild angezeigt wird, was zur Folge hat, dass die Seiten, aufgrund fehlender Navigation nicht mehr wechselbar sind. Ich hoffe ich habe mich nicht zu verrückt ausgedrückt...!? Ich habe in der Webbrowser-Kompo DragMode auf dmAutomatic gestellt. Leider ohne Erfolg. Wenn nötig poste ich mal die Seite, die es betrifft. Vielleicht ist es auch das Problem, dass dies bei einer XML-Seite mit XSL-Formatierung auftritt...!? |
Re: Drag and Drop im Webbrowser deaktivieren
Das Problem ist leider noch aktuell und macht unserem Publikum und mir echt zu schaffen...
Hat keiner eine Idee? |
Re: Drag and Drop im Webbrowser deaktivieren
Ist echt vielleicht möglich Drag&Drop für das gesamte Programm und all seine Komponenten zu deaktivieren, um so das Problem zu lösen? Sichtbar ist eh nur die WebBrowser-Komponente...
|
Re: Drag and Drop im Webbrowser deaktivieren
Du könntest im Event OnBeforeNavigate2 prüfen, ob die URL ein GIF oder JPEG ist und eine stille Exception (Abort) werfen.
|
Re: Drag and Drop im Webbrowser deaktivieren
Hallo Shmia,
leider brachte das nix. Hier mal meine Routine:
Delphi-Quellcode:
Das Komische ist, dass das Problem nicht bei allen Bildern auftritt. Schwerpunktmässig bei XML-Seiten, die durch XSL formatiert wurden...Das Drag&Drop-Problem tritt im übrigen nicht nur bei Bildern auf, sondern auch bei Links...
procedure TForm1.web_cisBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin ShowMessage(url+chr(13)+targetframename); if (ExtractFileExt(url)='.jpg') or (ExtractFileExt(url)='.gif') then Exit; StatusBar1.Panels[0].Text:=ExtractFileName(url); StatusBar1.Panels[2].Text:=PostData; if pDisp = web_cis.DefaultInterface then LockWindowUpdate(Handle); end; Das Problem scheint auch zu sein, dass dieses Ereignis überhaupt nicht ausgelöst wird, denn meine Showmessage ganz oben wurde mir nur angezeigt, wenn ich "normal" navigiert habe. Wenn ich aber einen Link oder Bild (es funktioniert wirklich nicht bei allen) gezogen und fallen gelassen habe, dann kam die Messagebox nicht und der Webbrowser verhielt sich so, als ob er von aussen etwas übergeben bekommen hat und zeigt dies dann auch als TOP an. |
Re: Drag and Drop im Webbrowser deaktivieren
Hallo Tom,
wie kann ich dein Problem ohne TouchScreen nachvollziehen? Grüße vom marabu |
Re: Drag and Drop im Webbrowser deaktivieren
"Canceln" nicht vergessen!!
Delphi-Quellcode:
procedure TForm1.web_cisBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var urlext : string; begin urlext := LowerCase(ExtractFileExt(url)); if (urlext='.jpg') or (urlext='.gif') then begin Cancel := True; // <== Good bye baby Exit; end; StatusBar1.Panels[0].Text:=ExtractFileName(url); StatusBar1.Panels[2].Text:=PostData; if pDisp = web_cis.DefaultInterface then LockWindowUpdate(Handle); end; |
Re: Drag and Drop im Webbrowser deaktivieren
Ganz einfach, ich Poste mal was mit Anhang...zum Nachvollziehen..
.gebt mir bitte mal 20 Minuten... Danke Shmia...wie gesagt auch das geht nicht, weil der IE sich wohl in diesem Falle anders verhällt ich sende in 20 Min. was gezpptes mit Infos, wie man es Reproduzieren kann... |
Re: Drag and Drop im Webbrowser deaktivieren
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang findet Ihr eine Zip-Datei. Diese einfach entpacken und die Datei livescore.html im InternetExplorer starten, da ja die TWebBrowser darauf aufbaut.
Es wird eine Seite mit 2 Frames angezeigt. Links ist ein NavyMenü mit einem Link. Klickt man diesen an, wird im rechten Frame die dazugehörige Seite angezeigt. Klickt man aber diesen Link an und zieht ihn innerhalb des Frames ein Stück nach unten, wird die rechts zu ladende Datei OnTop geladen. Ein zurück gibts dann nicht mehr (zumindest auf dem Touch). Mit der Tastatur reicht ein Markieren des Fensters und ein Backspace. Das gleiche Problem tritt auf, wenn man mal auf der Seite mit den Ergebnissen eine der Flaggen anklickt und etwas mit der Maus zieht oder nur den AufschlagsBall etwas zieht. Das ganze ist so graierend, dass GetFrameDoc und GetDeepFrameDoc natürlich "abschmieren". Auch kann ich per UDP nichts mehr an diesen Rechner senden, weil der die Ganze Zeit versucht in einem verschachtelten Frameset, welches nach diesem Vorgang nicht mehr da ist, etwas zu aktualisieren... Wäre also schön, wenn jemand von Euch einen Vorschlag hätte, wie man das händeln kann.... |
Re: Drag and Drop im Webbrowser deaktivieren
Hallo Tom,
hier ein Zwischenstand: das Verhalten scheint durch die clientseitige Transformation im IE ausgelöst zu werden. In deinem vorherigen Ansatz über Templates existiert es nicht und auch der Firefox ist immun. marabu |
Re: Drag and Drop im Webbrowser deaktivieren
Hallo Achim,
ich habe auch schon festgestellt, dass das nur bei den dynamisch generierten Seiten auftritt und bei den statischen Seiten, die zumeist HTML-Dateien sind, nicht. Im Firefox tritt es nicht auf, dass stimmt auch, aber leider hilft mir das nicht...Aber schön, dass ich nicht allein bin... |
Re: Drag and Drop im Webbrowser deaktivieren
Das Problem tritt auch nur auf, wenn die Seiten im IE selbst betrachtet werden. In einer Anwendung mit TWebBrowser ist alles in Ordnung. Eventuell lässt sich etwas über einen JavaScript event handler machen, der das Dragging beim Starten gleich unterbindet.
marabu |
Re: Drag and Drop im Webbrowser deaktivieren
Hm, das kann ich gerade nicht ganz verstehen, denn es doch schon so, dass ich die Seiten in meinem Webbrowser betrachte...!? Naja aber Du hast da sicher Recht.
Hast Du eine Idee bezüglich des JavaScripts??? |
Re: Drag and Drop im Webbrowser deaktivieren
Vielleicht später - wenn ich wieder in meinem heimischen Büro bin.
marabu |
Re: Drag and Drop im Webbrowser deaktivieren
Danke für das Angebot. Ich war mal bei SelfHtml und auf den Seiten von MSDN und habe dort dann das nachlesen dürfen was die Masse hier wohl ohnehin schon weiss.
Das Problem wird behoben, indem man folgendes im Body-Tag notiert: <body onselectstart="return false" onDragStart="return false" onDrop="return false"> Dadurch wird das Drag&Drop verhindert und auch das Selektieren von Text und sonstigen Objekten ist nicht mehr möglich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz