AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Internet Explorer meldet Fehler in Script

Ein Thema von idefix2 · begonnen am 16. Mai 2017 · letzter Beitrag vom 16. Mai 2017
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Internet Explorer meldet Fehler in Script

  Alt 16. Mai 2017, 17:56
Ich verwende den TWebbrowser, um automatisiert von einer Seite Daten abzurufen.
Im Prinzip funktioniert das, aber jedes mal, wenn die Seite geladen wird, kommt als erstes eine Fehlermeldung: Skriptfehler, die ich manuell mit dem Klick auf einen der Buttons (egal, ob ja oder nein) quittieren muss, bevor er weitermacht. Nachdem ich auf diese Art regelmäßig etliche Unterseiten abarbeiten möchte, ist das natürlich sehr lästig. Hat jemand eine Idee, wie ich das wegbringen könnte? Dir Tipps von der Microsoft Seite https://support.microsoft.com/de-at/help/285212 habe ich schon versucht, hat aber alles nichts geholfen (Wirken sich die IE-Einstellungen überhaupt auch auf den TWebbrowser aus?).

Wenn ich den IE vom Betriebssystem aus aufrufe, bringt die Seite ebenfalls (etwas andere) Fehlermeldungen, die ist offenbar schleißig programmiert (oder der IE, wie auch immer) - aber dagegen kann ich nichts machen. Im Firefox gibt es beim Seitenaufruf keine Probleme, bloß hilft mir das nichts.
Miniaturansicht angehängter Grafiken
ie.png  

Geändert von idefix2 (16. Mai 2017 um 17:59 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Internet Explorer meldet Fehler in Script

  Alt 16. Mai 2017, 18:02
Im Objektinspektor beim TWebBrowser Silent auf True setzen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.866 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Internet Explorer meldet Fehler in Script

  Alt 16. Mai 2017, 18:43
Tipp: Dir ist auch klar dass der TWebBrowser standardmäßig einen uralten Internet Explorer 7 emuliert, oder? Der hat natürlich dann auch mit Dingen wie Skripten und HTML5-Elementen Probleme die ein aktueller IE nicht mehr hat.

Das kann man nur über die Registry steuern, aber wenn man das direkt bei Anwendungsstart macht kann man es sich aussuchen in welchem IE-Modus der TWebBrowser läuft...


Delphi-Quellcode:
unit Common.Classes.Browser.EmulationAdjuster;

interface uses System.IoUtils, Winapi.Windows;

type
   /// <summary> <para>Setzt die Browser-Emulation für diese Anwendung (im HKCU-Hive)
   /// auf den angegebenen Wert. Standardmäßig, ohne Eingriff ist es in Windows immer
   /// <see cref="IE7_embedded" /></para>
   /// </summary>
   /// <remarks>
   /// Das Setzen des Emulations-Werts sollte so früh wie möglich
   /// passieren denn spätestens nach dem ersten Navigieren des WebBrowsers ist es zur
   /// ganzen Laufzeit der Anwendung fest und lässt sich nachträglich nicht mehr ändern
   /// </remarks>
   TBrowserEmulationAdjuster = class
      private
         class function GetExeName(): String; inline;
      public const
         // Quelle: https://msdn.microsoft.com/library/ee330730.aspx, Stand: 2017-04-26
         IE11_default   = 11000;
         IE11_Quirks      = 11001;
         IE10_force      = 10001;
         IE10_default   = 10000;
         IE9_Quirks      = 9999;
         IE9_default      = 9000;
         /// <summary>
         /// Webpages containing standards-based !DOCTYPE directives are displayed in IE7
         /// Standards mode. Default value for applications hosting the WebBrowser Control.
         /// </summary>
         IE7_embedded   = 7000;
      public
         class procedure SetBrowserEmulationDWORD(const value: DWORD);
   end platform;

implementation uses System.Win.Registry, System.SysUtils;

{ TBrowserEmulationAdjuster }

class function TBrowserEmulationAdjuster.GetExeName(): String;
begin
   Result := TPath.GetFileName( ParamStr(0) );
end;

class procedure TBrowserEmulationAdjuster.SetBrowserEmulationDWORD(const value: DWORD);
const
   registryPath = 'Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION';
var
   registry:   TRegistry;
   exeName:   String;
begin
   exeName := GetExeName();

   registry := TRegistry.Create(KEY_SET_VALUE);
   try
      registry.RootKey := HKEY_CURRENT_USER;
      Win32Check( registry.OpenKey(registryPath, True) );
      registry.WriteInteger(exeName, value)
   finally
      registry.Destroy();
   end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Internet Explorer meldet Fehler in Script

  Alt 16. Mai 2017, 20:04
Bist du sicher, dass du das nicht auch schlicht per Download der Seite mit TIdHttp oder ähnlichem machen kannst? Berechnen die Skripte auf der Seite etwas oder ähnliches, dass du die brauchst?
Denn nur dafür braucht man normalerweise TWebBrowser.

Und ansonsten würde ich das Chromium Control benutzen. Da werden die Skripte vermutlich ohne Fehler laufen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Internet Explorer meldet Fehler in Script

  Alt 16. Mai 2017, 20:45
Im Objektinspektor beim TWebBrowser Silent auf True setzen.
Danke, das funktioniert.

Bist du sicher, dass du das nicht auch schlicht per Download der Seite mit TIdHttp oder ähnlichem machen kannst? Berechnen die Skripte auf der Seite etwas oder ähnliches, dass du die brauchst?
Denn nur dafür braucht man normalerweise TWebBrowser.

Und ansonsten würde ich das Chromium Control benutzen. Da werden die Skripte vermutlich ohne Fehler laufen.
Sicher bin ich nicht. Aber das Program ist diesmal nicht für einen Kunden, sondern nur für mich selbst, und es wird sich das, was ich brauche, nicht leicht zu 100% automatisieren lassen, d.h. ich muss neben dem Download der Daten die Seite auch am Bildschirm anzeigen. Ich vermute, dass da ein Browser-Control sinnvoller als ein HTTP-Download ist.
Ich weiß nicht, was diese Skripte auf der Seite machen, ich brauche sie jedenfalls nicht. Was ich haben will, bekomme ich trotz der Skriptfehler richtig angezeigt.

Tipp: Dir ist auch klar dass der TWebBrowser standardmäßig einen uralten Internet Explorer 7 emuliert, oder?
Nein, war mir nicht klar. Danke für den Hinweis für die Zukunft. Für diesen Job tuts allerdings der IE7 auch.
Und uralt? Ich bin sicher, Du bist älter
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf