【问题标题】:Stop TWebBrowser script error popups, but do not stop OnShowScriptError event停止 TWebBrowser 脚本错误弹出窗口,但不停止 OnShowScriptError 事件
【发布时间】:2019-01-09 12:32:12
【问题描述】:

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

Silent := True;

但它也禁止OnShowScriptError 事件。

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

【问题讨论】:

  • 也许只是将AHandled 参数设置为True 以表明您处理了这个错误?
  • @nil -- 这还不够。在这种情况下仍可能出现常规消息框alert
  • @Zam:没问题。它们应该会出现,但不会出现诊断消息。
  • @nil:您的评论是我想要的解决方案!您可以将其作为答案发布在这里并获得您的积分。
  • @Zam 我不明白为什么我的评论应该是错误的,我的意思是你的回答基本上正是我所建议的?

标签: delphi twebbrowser


【解决方案1】:

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

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

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

此页面上的Javascript代码:

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

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

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

德尔福示例:

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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多