3

如何捕获页面使用 Webbrowser / EmbeddedWB 发出的所有 AJAX 请求?不幸的是,BeforeNavigate2 不会因 AJAX 请求而被触发。

例如:当您在谷歌搜索栏中输入时发出的请求。

4

2 回答 2

1

如果环境在你的控制之下。您可以使用自定义 HTTP 代理(例如基于 Indy)。

请参阅:Indy 的 TIdHTTPProxyServer:如何过滤请求?

Ajax 请求可以根据其特定的标头进行检测:

如何区分 Ajax 请求和普通 Http 请求?


更新:微软网络论坛上的这个问题有一个公认的答案:

于 2013-09-07T11:20:46.413 回答
1

如果我是你,我会在加载后将我自己的脚本注入到每个页面中。这是一个捕获所有 AJAX 请求并通知应用程序的脚本。

使用以下代码,您可以捕获由jQuery(尚未尝试,但我认为它不适用于非 jQuery AJAX 请求)发出的每个 AJAX 请求。

$.ajaxSetup({
    beforeSend: function() {
        // before sending the request
    },
    complete: function() {
        // after request completion
    }
});

它甚至不是代码,但它可以为您提供您想要做什么的线索。

当然使用这种方法,您将需要以某种方式与您的应用程序进行通信。例如,我将使用我自己编造的协议和一个新的窗口命令,以便我的 Delphi 组件能够捕获和解析事件。

正如我所说,这里有很多选择,我只是提供一个线索。

于 2013-09-06T23:55:26.980 回答