浏览器助手对象和AJAX

时间:2011-11-10 23:01:38

标签: c# ajax asynchronous bho

我想知道是否应该在使用AJAX的页面上触发BeforeNavigate2或DocumentComplete事件。例如谷歌地图。当我在地址栏中输入内容时,一切正常,但是当我移动地图并调整大小时,没有任何事情发生(DocumentComplete和BeforeNavigate2不会触发),但是数据会发送到Internet或从Internet发送。

3 个答案:

答案 0 :(得分:0)

ajax中的a代表异步。这些事件响应同步方法完成而触发。由于可以在任何时候发出异步请求,浏览器无法知道它们何时全部完成。

答案 1 :(得分:0)

我认为你需要处理 ajax 请求,你可以处理DownloadBegin和DownloadComplete事件。

在代码中:

public int SetSite(object site)
{
   if (site != null)
   {
      webBrowser = (WebBrowser)site;
      webBrowser.DownloadComplete += new DWebBrowserEvents2_DownloadCompleteEventHandler(DownloadComplete);
      webBrowser.DownloadBegin += new DWebBrowserEvents2_DownloadBeginEventHandler(DownloadBegin);
   }
   else
   {
      webBrowser.DownloadComplete += new DWebBrowserEvents2_DownloadCompleteEventHandler(DownloadComplete);
      webBrowser.DownloadBegin += new DWebBrowserEvents2_DownloadBeginEventHandler(DownloadBegin);
      webBrowser = null;
   }
   return 0;
}

活动:

private void DownloadBegin()
{
   MessageBox.Show("Download Begin");
}
private void DownloadComplete()
{
   MessageBox.Show("Download Complete");
}

这对我有用。

答案 2 :(得分:0)

我监控下载开始并下载完整事件以处理包含ajax代码的页面。 还需要程序逻辑来控制流程,例如设置/检查标志。