2013-04-25 33 views
6

使用IWebBrowser2界面很容易知道何時導航(OnBeforeNavigate)和完成(OnDocumentComplete)。但是,瀏覽器中的很多工作都是通過Ajax調用(使用XMLHttpRequest)完成的。用於檢測Ajax調用的Internet Explorer加載項

當Ajax調用發生並在IE中完成時,是否有訂閱事件跟蹤的方法?

+0

看看這個:http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/66aee0aa-2c1e-4fa2-9eb3-a4b80481288f – 2013-05-03 15:43:20

回答

1

此之前的問題似乎提供了一個答案:

Monitor ajax calls from IE BHO

它基本上是說,你要一些JavaScript注入到每一個頁面來處理onreadystatechange

+0

我正在尋找的解決方案應該不會做任何事情DOM或需要對Web應用程序進行任何更改,因爲在很多情況下,我們無法控制該應用程序。 – 2013-04-27 17:10:32

+1

您不必更改Web應用程序。 BHO可以[將腳本注入任何頁面](http://www.codeguru.com/csharp/article.php/c18725/Advanced-C-Programming-Developing-IE-Extensions.htm),無論是在你的控制之下或不。 – kichik 2013-04-27 17:16:20

+0

我仍然沒有看到如何通過例如jQuery $ Ajax調用來跟蹤調用... – 2013-04-27 17:21:40

3

官方的方法是使用IHTMLChangeSink創建更新日誌。這並不複雜,但實施起來有點繁瑣,所以不會丟失任何請求。

我認爲要做到這一點的最好辦法可能是create an HTTP proxy server,然後用InternetSetOption設置代理(注意,第一個參數是NULL到當前進​​程設置)到本地的HTTP代理服務器。

+0

謝謝。您是否知道這是否可以通過BHO和/或策略透明地完成,而無需用戶執行任何配置? – 2013-04-27 17:12:07

+0

@OtávioDécio - HTTP代理可以在你的BHO中運行,你已經配置了'IWebBrowser2'連接到'InternetSetOption';它不需要用戶執行任何配置。 – geocar 2013-04-27 18:41:13