我正在使用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;发布于 2020-02-26 01:20:54
您可以将TWebBrowser的OnWindowClosing处理程序分配给如下内容:
procedure TForm1.WebBrowser1WindowClosing(
ASender: TObject;
IsChildWindow: WordBool;
var Cancel: WordBool
);
begin
Cancel := True;
end;这不会产生一个“你想关闭窗口吗?”对话框中,并简单地放弃关闭窗口的JavaScript请求。
https://stackoverflow.com/questions/60399807
复制相似问题