代码之家  ›  专栏  ›  技术社区  ›  Paul

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

  •  1
  • Paul  · 技术社区  · 6 年前

    脚本错误模式窗口可以通过设置在twebbrowser中取消

    Silent := True;
    

    但也禁止 OnShowScriptError 事件。

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   Zam    6 年前

    你的评论是我想要的解决方案!你可以把它作为答案贴出来 来,拿你的分数。

    不,你需要不同的行为。在下面的示例中: 1)将显示来自Web浏览器窗口的消息框 2)错误信息将添加到 TMemo 成分

    测试URL: 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

    德尔菲样本:

    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控制主机处理脚本错误)