2012-02-18 114 views
4

我正在开发基于HTML的用户界面的Windows窗体应用程序。 我需要知道何时完全加载网页。 我已经测试过很多web浏览器事件,比如DocumentCompleted,IsBusy,ReadyState,但没有一个响应我的预期。如何确定网页是否完全在网页浏览器中加载?

+0

你期望什么,你会得到什么? – Softnux 2012-02-18 08:42:33

+0

我需要一个事件,当HTML页面被加载完全触发。 – 2012-02-18 08:46:42

+0

你有没有尝试onload事件?发生了什么? – 2012-02-18 08:47:51

回答

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/

+0

我无法在我的project.is中使用jQuery库来完成任何乳清。 – 2012-02-18 09:00:32

+0

就像我说的,如果你不能使用jQuery,那么你将不得不使用依赖浏览器的解决方案之一,而不依赖像jQuery这样的库。 – sngregory 2012-02-18 09:11:56

0

Chamika Sandamal是正确的 - 你应该使用DocumentComplete事件BUT - 检查'发件人'对象。最后一个“完整”事件来自“浏览器”对象本身,而不是来自图像,文本等,在加载时触发它。在页面上的所有元素都会触发DocumentComelete事件后,最后一个事件将来自浏览器本身。如果你可以将'发件人'转换为浏览器对象 - 在这里你可以 - 这是浏览器加载完成事件。只要注意,如果你在HTML中有任何'frame'标签,它们会在浏览器完成事件后产生不同的DcoumentComplete事件。我认为'框架'被认为是另一个HTML页面,所以它会有自己'完整的'事件。