TWebBrowser处理关闭请求

时间:2020-02-25 17:04:57

标签: delphi webbrowser-control twebbrowser

我正在将TWebBrowser与引入一些新功能的类帮助程序一起使用(如果与以下问题有关):

type
  TWebBrowserEx = class helper for TWebBrowser
  public
    procedure Clear;
    procedure Wait;
    function LoadHTML(const HTML: string; const AFakeURL: string=''): boolean;
  end;

我注意到,如果JavaScript要关闭浏览器窗口,则TWebBrowser的句柄将被破坏。

<script type="text/javascript">
   window.close();
</script>

调用TWebBrowser.LoadHTML()等将导致异常。

我想决定当JavaScript要关闭窗口时我的应用程序做什么。 (我的想法是,根据配置设置,要么清除页面,然后让应用程序保持打开状态,要么关闭该应用程序。)

问题:我该如何处理? 我的第一个猜测是收到WM_DESTROY消息,但我认为它与类帮助程序不兼容,因为什么也没发生。

type
  TWebBrowserEx = class helper for TWebBrowser
  private
    procedure MessageDestroy(var msg: TMessage); message WM_DESTROY; // <-- will never be called
  public
    procedure Clear;
    procedure Wait;
    function LoadHTML(const HTML: string; const AFakeURL: string=''): boolean;
  end;

1 个答案:

答案 0 :(得分:3)

您将OnWindowClosing的{​​{1}}处理程序分配给以下内容:

TWebBrowser

这不会产生“是否要关闭窗口?”对话框,然后简单地放弃JavaScript请求以关闭窗口。