【问题标题】:How to catch AJAX requests in Webbrowser如何在 Webbrowser 中捕获 AJAX 请求
【发布时间】:2013-09-11 03:55:08
【问题描述】:

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

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

【问题讨论】:

  • 我确定有办法,但这是一个相当大的话题。嵌入式浏览器没有直接的 AJAX 支持,但有一些方法可以捕获某些事件。如何解释和翻译这些事件并找到您需要的事件取决于您。
  • 我建议为OS webbrowser控件添加标签(暂时找不到)。以及指向其 - Microsoft - 文档的链接。
  • MSDN Webbrowser Control 文档在这里:msdn.microsoft.com/en-us/library/aa752040%28v=vs.85%29.aspx
  • 有趣的问题。我投票重新开放。

标签: ajax delphi http webbrowser-control twebbrowser


【解决方案1】:

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

见:Indy's TIdHTTPProxyServer: How to filter requests?

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

How to differentiate Ajax requests from normal Http requests?


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

【讨论】:

  • 为什么这个问题被搁置了?
【解决方案2】:

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

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

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

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

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

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

【讨论】:

  • @EricSantos:我认为确实如此。我没有太多关于 BHO 的信息,但我认为当你想通知主应用程序时,它可以帮助你,当然还有注入代码。但是,如果使用 BHO 没有问题,例如安装、批准等,那就更好了。
  • 啊,所以您实际上是在挂钩所有 Ajax 请求?也能获取 Post 数据吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
相关资源
最近更新 更多