【问题标题】:How to determind if the web page is loaded completely in web browser?如何确定网页是否在网络浏览器中完全加载?
【发布时间】:2012-02-18 08:40:45
【问题描述】:

我正在开发基于 HTML 用户界面的 Windows 表单应用程序。 我需要知道网页何时完全加载。 我已经测试了许多 Web 浏览器事件,例如 DocumentCompleted、IsBusy、ReadyState,但它们都没有响应我的预期。

【问题讨论】:

  • 你期待什么,你会得到什么?
  • 我需要一个 HTML 页面加载完成时触发的事件。
  • 你试过onload事件吗?发生了什么?
  • .NET 上的 webBrowser 没有 onload 事件。

标签: c# asp.net .net winforms webbrowser-control


【解决方案1】:

如果可以使用jQuery库,那就真的很简单了。

$(document).ready() {
    //your page is fully loaded
};

否则,您将不得不根据所使用的浏览器依赖不同的方法。由于它是一个 Windows 窗体应用程序,我假设您使用的渲染引擎是基于 IE 的。如果是这样,那么这可能对您有用:

if (document.attachEvent)
{
 document.attachEvent("onreadystatechange", function()
 {
      if (document.readyState === "complete")
      {
           document.detachEvent("onreadystatechange",
                arguments.callee);
           /* code to run on load */
      }
 });
}

如果您有兴趣,可以在此处找到其他与浏览器相关的解决方案: http://dean.edwards.name/weblog/2006/06/again/

【讨论】:

  • 我不能在我的项目中使用 jQuery 库。是否有任何乳清来完成它。
  • 就像我说的,如果您不能使用 jQuery,那么您将不得不使用一种不依赖于 jQuery 之类的库的依赖于浏览器的解决方案。
【解决方案2】:

Chamika Sandamal 是正确的 - 您应该使用 DocumentComplete 事件但是 - 检查“发件人”对象。最后一个“完成”事件来自“浏览器”对象本身,而不是来自加载时触发它的图像、文本等。在页面上的所有元素将触发 DocumentComelete 事件之后,最后一个事件将来自浏览器本身。如果您可以将“发送者”转换为浏览器对象 - 就在这里 - 它是浏览器加载完成事件。请注意,如果您在 HTML 中有任何“框架”标签,它们将在浏览器完成事件之后引发不同的 DcoumentComplete 事件。我认为“框架”被视为另一个 HTML 页面,因此它本身将具有“完整”事件..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-02
    • 2010-09-22
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多