如何确定网页是否完全在网络浏览器中加载?

时间:2012-02-18 08:40:45

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

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

2 个答案:

答案 0 :(得分:3)

如果你可以使用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/

答案 1 :(得分:0)

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