2013-04-25 6 views
6

Sử dụng giao diện IWebBrowser2 khá dễ dàng để biết khi điều hướng diễn ra (OnBeforeNavigate) và kết thúc (OnDocumentComplete). Tuy nhiên, rất nhiều công việc trong các trình duyệt được thực hiện thông qua các cuộc gọi Ajax (sử dụng XMLHttpRequest).Tiện ích bổ sung Internet Explorer để phát hiện các cuộc gọi Ajax

Có cách nào để đăng ký theo dõi sự kiện khi cuộc gọi Ajax xảy ra và kết thúc trong IE không?

+0

Kiểm tra điều này: http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/66aee0aa-2c1e-4fa2-9eb3-a4b80481288f –

Trả lời

1

câu hỏi trước này dường như cung cấp một câu trả lời:

Monitor ajax calls from IE BHO

Về cơ bản nó nói rằng bạn phải tiêm một số hoạt Javascript để mỗi trang để xử lý onreadystatechange.

+0

Giải pháp mà tôi đang tìm kiếm không nên làm gì DOM hoặc yêu cầu bất kỳ thay đổi nào đối với ứng dụng web vì trong nhiều trường hợp, chúng tôi sẽ không kiểm soát được điều đó. –

+1

Bạn không phải thay đổi ứng dụng web. BHO có thể [chèn tập lệnh vào bất kỳ trang nào] (http://www.codeguru.com/csharp/article.php/c18725/Advanced-C-Programming-Developing-IE-Extensions.htm), cho dù đó là dưới sự kiểm soát của bạn hay không. – kichik

+0

Tôi vẫn không thấy cách đó sẽ giúp tôi theo dõi các cuộc gọi thông qua ví dụ như các cuộc gọi jQuery $ Ajax ... –

3

Cách chính thức là tạo danh sách thay đổi bằng cách sử dụng IHTMLChangeSink. Nó không phức tạp, nhưng nó hơi tẻ nhạt để thực hiện để bạn không mất bất kỳ yêu cầu nào.

Tôi nghĩ cách tốt nhất để làm điều này có thể là create an HTTP proxy server, sau đó sử dụng InternetSetOption để đặt proxy (lưu ý rằng đối số đầu tiên là NULL để đặt cho quy trình hiện tại) thành máy chủ proxy HTTP cục bộ của bạn.

+0

Cảm ơn bạn. Bạn có biết nếu đó là một cái gì đó có thể được minh bạch thực hiện thông qua một BHO và/hoặc chính sách, mà không cần người dùng phải thực hiện bất kỳ cấu hình? –

+0

@ OtávioDécio - Proxy HTTP có thể chạy bên trong BHO của bạn mà bạn đã cấu hình 'IWebBrowser2' để kết nối với' InternetSetOption'; Nó sẽ không yêu cầu người dùng thực hiện bất kỳ cấu hình nào. – geocar