Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TWebBrowser Komponente und Javascript (https://www.delphipraxis.net/192840-delphi-twebbrowser-komponente-und-javascript.html)

SusiT 24. Mai 2017 10:17

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: https://www.heise.de/js/mobile-defle...ed7d6dc25326c5'

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:
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.
Ich Danke euch allen für eure Bemühungen.

Der schöne Günther 24. Mai 2017 10:19

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:

http://www.delphipraxis.net/192748-i...er-script.html

SusiT 24. Mai 2017 10:41

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.

SusiT 24. Mai 2017 10:59

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.

Der schöne Günther 24. Mai 2017 11:27

AW: Delphi TWebBrowser Komponente und Javascript
 
Ich habe es nicht ausprobiert, aber so rein vom Gefühl her finde ich das
Delphi-Quellcode:
OnShow
-Event des Formulars einen sehr späten Zeitpunkt das einzustellen.
Ich persönlich würde das im
Delphi-Quellcode:
OnCreate
-Event des Formulars oder sogar noch davor, in der .dpr-Datei vor dem
Delphi-Quellcode:
Application.Run()
machen.

Nur als Hinweis aber es geht ja auch so ;-)

bra 24. Mai 2017 13:56

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?

nahpets 24. Mai 2017 14:40

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.

SusiT 24. Mai 2017 14:42

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.

bra 24. Mai 2017 15:00

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:

Blackpit 19. Mai 2019 07:42

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 07:00 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz