2013-03-07 24 views
6

Ich bin TEmbedweb laufen und ich habe einen JavaScript-Timeout-Fehler beim Navigieren auf dieser TEmbeddedwb.Delphi Webbrowser: Wie kann man das Javascript Fehler verhindern oder verbergen?

(Ich habe diesen Fehler nicht während in meinem Internet Explorer ausgeführt!)

enter image description here

Der Browser fragt mich, ob ich die Ausführung des Skripts beenden möchten.

Ich habe die TEmbeddedwb propertioes zu

silent = true

dialogoBox.disableAll = true

Aber ich habe immer noch das Popup comming out!

1) Warum habe ich diesen Fehler (durch 2 Stück getestet), während es kein Fehler, während auf Internet Explorer Navigation

2), wie Sie dieses Popup deaktivieren/verstecken?

Grüße

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB; 

type 
    TForm1 = class(TForm) 
    iemain: TEmbeddedWB; 
    procedure iemainScriptError(Sender: TObject; ErrorLine, ErrorCharacter, 
     ErrorCode, ErrorMessage, ErrorUrl: String; 
     var ScriptErrorAction: TScriptErrorAction); 
    procedure FormCreate(Sender: TObject); 
    private 
    { Déclarations privées } 
    public 
    { Déclarations publiques } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.iemainScriptError(Sender: TObject; ErrorLine, 
    ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: String; 
    var ScriptErrorAction: TScriptErrorAction); 
begin 
     MessageDlg('hello', mtWarning, [mbOK], 0); 
     if ErrorCode='123' then ScriptErrorAction := eaContinue; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    iemain.Navigate('http://www.expedia.fr/Hotels'); 
end; 

end. 
+0

Um Ihre erste Frage zu beantworten, müssen Sie den Link zu der Seite angeben, zu der Sie navigieren. – TLama

+0

Sie sehen also das 'MessageDlg' oder nicht? – kobik

+0

Ich kann nicht reproduzieren. Die Seite leitet zu "https: // ...." um und fragt dann, ob ich nicht sicher gelieferte Inhalte sehen möchte. Ob ich mit Ja oder Nein antworte, die Seite wird angezeigt und reagiert wie erwartet. Ich denke, du musst mehr Details darüber geben, welche Einstellungen du von "normal" unterscheiden kannst, was auch immer das ist. –

Antwort

5

Wie JavaScript-Fehler in TEmbeddedWB behandeln?

einen Handler für das Ereignis OnScriptError schreiben und eine der verfügbaren TScriptErrorAction Werte im ScriptErrorAction Ausgabeparameter zurück. Um den Skriptfehler zu ignorieren und die Verwendung fortzusetzen, verwenden Sie z. B .:

procedure TForm1.EmbeddedWB1ScriptError(Sender: TObject; ErrorLine, 
    ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; 
    var ScriptErrorAction: TScriptErrorAction); 
begin 
    if ErrorCode = 123 then 
    ScriptErrorAction := eaContinue; 
end; 
+0

+1, Ich frage mich, ob der Browser tatsächlich die Ausführung des Skripts stoppt (oder vielleicht wird es hängen?). – kobik

+1

Ich habe gerade dieses Ereignis hinzugefügt und einen Breapoint in EmbeddedWB1ScriptError eingefügt und es geht nie dorthin! Es zeigt den Fehler direkt an und EmbeddedWB1ScriptError wird überhaupt nicht aufgerufen! – yarek