【问题标题】:How check WebBrowser completed fully?如何检查 WebBrowser 完全完成?
【发布时间】:2013-08-09 10:27:09
【问题描述】:

如何检查 WebBrowser 何时完全完成?此代码不适用于繁重的 AJAX 网站。它会在站点真正完成之前触发,从而在 javascript 仍在运行时返回 HTML 代码。

我需要检查网站何时完全完成。这段代码用http://www.html5test.com测试过

procedure Browser_DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  CurWebrowser: IWebBrowser;
  TopWebBrowser: IWebBrowser;
  Document: OleVariant;
  WindowName: string;
begin
  CurWebrowser := pDisp as IWebBrowser;
  TopWebBrowser := (ASender as TEmbeddedWB).DefaultInterface;
  if (CurWebrowser = TopWebBrowser) and not Browser.Busy and (Browser.ReadyState >= READYSTATE_COMPLETE) then begin
    FDocumentLoaded:=True;
    end;
end;

【问题讨论】:

    标签: ajax delphi twebbrowser


    【解决方案1】:

    使用 Ajax 的网页由浏览器加载并执行 JavaScript 以更新/修改其内容。

    客户端不知道何时达到“完全完成”状态。某些 JavaScript 方法可能会在延迟后或定期运行。

    【讨论】:

    • 这不是真正的解决方案,也不是正确的答案。
    • 为什么你认为这不是一个正确的答案?我们无法想出一个可能不存在的解决方案。当 initialization 完成时,您可以通过 JavaScript 的回调通知您的应用程序,但这需要以某种方式 inject 导航页面脚本(如果类似 initialization i> 完成存在)。
    • @TLama 是的,使用 C# pastebin.com/gH5dbNHi 是可能的,希望您可以发布答案以便我接受。 :)
    • 一般来说不是。可能适用于特定页面(您没有在问题中指定)。并且该代码完全实现了当传递给DocumentComplete 事件的URL 参数不以http://https:// 开头时加载完全完成的希望,也不是原始导航URL 的绝对路径。这是您所问问题的答案。如果是针对特定站点,那么它可能有解决方案,但对于这个通用主题,没有通用的解决方案。
    • @TLama 请再次检查问题。由于javascript仍在运行,因此在给出错误的html响应之前触发了该事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多