停止TWebBrowser脚本错误弹出窗口,但不要停止OnShowScriptError事件

时间:2019-01-09 12:32:12

标签: delphi twebbrowser

可以通过设置在TWebBrowser中抑制脚本错误模式窗口

Silent := True;

但它也禁止OnShowScriptError事件。

我想用OnShowScriptError收集脚本错误,但是停止错误模式窗口。

1 个答案:

答案 0 :(得分:3)

  

您的评论是我想要的解决方案!您可以将其发布为答案   在这里获取您的观点。

否,您需要不同的行为。在下面的示例中: 1)将出现来自网络浏览器窗口的消息框 2)有关错误的信息将添加到TMemo组件

用于测试的网址:http://1click.sdk.1click.lv/test.asp

此页面上的JavaScript代码:

  <script type="text/javascript">
  alert("test1"); 
  var t = 100 / x0;
  </script>

恢复:用户将看到警报(“测试”),但看不到有关错误的信息。

还有什么重要的?您应该在Internet Explorer中启用脚本调试,否则所有有关的信息都将丢失。

enter image description here

Delphi示例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://1click.sdk.1click.lv/test.asp');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WebBrowser1.Silent := False;
end;

procedure TForm1.WebBrowser1ShowScriptError(ASender: TObject;
  const [Ref] AErrorLine, AErrorCharacter, AErrorMessage, AErrorCode,
  AErrorUrl: OleVariant; var AOut: OleVariant; var AHandled: Boolean);
begin
  Memo1.Lines.Add(AErrorMessage);

  AHandled := True;
end;

enter image description here

您真正想要的是: http://web.archive.org/web/20150329085438/http://support.microsoft.com/en-us/kb/261003(如何作为WebBrowser控件主机处理脚本错误)