![]() |
Delphi TWebBrowser Komponente und Javascript
Hallo an alle,
ich habe schon sehr viel zum Thema gesucht, gelesen und versucht zu verstehen aber eine Lösung zu einem, meiner Meinung nach eigentlich einfachem Problem, nicht gefunden. Ich habe eine TWebBrowser Komponente auf ein Formular gezogen und mittels WebBrowser1.Navigate('http://www.heise.de'); mit einer Webseite versehen. Das funktioniert bei einfachen Seiten ganz gut. Sobald Webseiten mit Javascript aufgerufen werden bekomme ich nur noch Fehlermeldungen: Zb: 'An error has occured in the script on this page' ... 'URL: ![]() Scheinbar können .js Dateien vom Browser Plugin nicht ausgewertet werden. Da die Browserkomponente auf dem InternetExplorer basiert sollte es doch eigentlich funktionieren da die Webseiten direkt im IE auch problemlos aufgerufen werden können. Die Frage ist, was getan werden muss, um über das Browserplugin tatsächlich alle Webseiten aufrufen zu können. Hier nun noch meine Code-Unit. Wie man sieht sehr einfach gehalten. Die Webseite heise.de gibt auch beispielhaft den Fehlerfall zurück.
Code:
Ich Danke euch allen für eure Bemühungen.
unit Unit9;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw; type TForm9 = class(TForm) WebBrowser1: TWebBrowser; procedure FormShow(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form9: TForm9; implementation {$R *.dfm} procedure TForm9.FormShow(Sender: TObject); begin WebBrowser1.Navigate('http://www.heise.de'); end; end. |
AW: Delphi TWebBrowser Komponente und Javascript
Nicht böse sein, aber wenn du wirklich viel gesucht hast, dann hättest du eigentlich das hier von letzter Woche gefunden:
![]() |
AW: Delphi TWebBrowser Komponente und Javascript
Bin ich nicht.
Die Sache mit dem Silence Modus ist nicht die Lösung. Aber das der Browser auf IE7 aufsetzt war mir nicht klar. Danke ersteinmal. |
AW: Delphi TWebBrowser Komponente und Javascript
Abschließend nochmal einen Dank an dich Günther,
das war die fehlende Info. Hier mein aktualisierter Code, falls es nochmal jemand benötigt. Damit klappt es.
Delphi-Quellcode:
unit Browser;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw, Common.Classes.Browser.EmulationAdjuster; type TForm9 = class(TForm) WebBrowser1: TWebBrowser; procedure FormShow(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form9: TForm9; implementation {$R *.dfm} procedure TForm9.FormShow(Sender: TObject); begin TBrowserEmulationAdjuster.SetBrowserEmulationDWORD(TBrowserEmulationAdjuster.IE11_Quirks); WebBrowser1.Navigate('http://www.heise.de'); end; end. |
AW: Delphi TWebBrowser Komponente und Javascript
Ich habe es nicht ausprobiert, aber so rein vom Gefühl her finde ich das
Delphi-Quellcode:
-Event des Formulars einen sehr späten Zeitpunkt das einzustellen.
OnShow
Ich persönlich würde das im
Delphi-Quellcode:
-Event des Formulars oder sogar noch davor, in der .dpr-Datei vor dem
OnCreate
Delphi-Quellcode:
machen.
Application.Run()
Nur als Hinweis aber es geht ja auch so ;-) |
AW: Delphi TWebBrowser Komponente und Javascript
Hat das Setzen des Registry-Eintrags dann nicht auch Auswirkungen auf alle anderen Programme, die das eventuell verwenden? Das einfach mal so pauschal zu ändern, halte ich für keine so optimale Sache. Und was passiert, wenn an dem PC kein IE 11 vorhanden ist?
|
AW: Delphi TWebBrowser Komponente und Javascript
Nein, es gibt in der Registry eine Stelle, an der jedes Programm die IE-Version eintragen kann, die für es selbst emuliert werden soll.
Andere Programm sind davon nicht betroffen. Und diese Stelle in der Registry ist genau für diese Einstellung von Microsoft so vorgesehen. Es ist also die optimale Art, die zu emulierende IE-Version für ein Programm vorzugeben. |
AW: Delphi TWebBrowser Komponente und Javascript
Mit dem OnCreate hast du recht. Bei dem Code hier handelt es sich nur um ein Demoprogramm um die Funktionalität zu zeigen. In meinem tatsächlichen habe ich es in Form.Create gepackt.
Die Zeile bewirkt, das ein registry Eintrag erzeugt wird. Der regtistry Eintrag ist gekoppelt mit dem .exe Namen der Delphianwendung aus der der Browser gestartet wird. Damit sollte es keine weiteren Auswirkungen haben. |
AW: Delphi TWebBrowser Komponente und Javascript
Ah... ich habe den EXE-Name in dem Registry-Key übersehen. So ist das natürlich stimmig, zumindest wenn man keinen mehrfach vorkommenden Namen verwendet, aber das ist dann halt Pech :stupid:
|
AW: Delphi TWebBrowser Komponente und Javascript
Auch wenn der Thread schon 2 Jahre her ist, das setzen der Registry ist nur ein mal erforderlich!!
Dies bei jedem öffnen eines TWebBrowser auszuführen macht keinen Sinn. Sowas gehört in Start bzw. Installationsroutine. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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