TIdHTTP组件可以处理javascript代码吗?

时间:2011-04-11 20:15:37

标签: delphi indy

我正在使用 TIdHTTP 组件来获取网页。适用于主页面。但它不会检索嵌入式JavaScript代码生成的内容。一个很好的例子是允许用户通过 disqus 添加评论的页面。

这是example

在该方案中, TIdHTTP.Get 方法无法在页面底部显示评论。

无论如何,这可以用Indy组件或任何其他本机组件来完成吗?

我已经尝试使用 TWebBrowser OLE控件。但我更喜欢使用本机delphi代码。

2 个答案:

答案 0 :(得分:3)

IdHTTP不会执行JavaScripts,因为IdHTTP不是浏览器。您需要向应用程序引入JavaScript执行程序,以便像浏览器那样从检索到的HTML源代码执行脚本。

您的示例是关于显示Google Analytics分析统计信息...这是您在应用程序中尝试做的事情吗?如果是这样的话,那你试图用预先渲染的结果一起破解它就是愚蠢的(没有意义的冒犯)。

Google Analytics专门提供API,以便您可以使用HTTP调用获取信息。一旦检索到该信息,您就可以使用本机Delphi组件和代码以您想要的任何想象或原始方式显示它。 因为GA提供了一个API,所以没有理由以你试图的方式去做。

答案 1 :(得分:2)

不,当然这不起作用。 Get函数只获取Web服务器返回的(HTML)文本。它甚至不知道返回的文本类型。它可以是HTML页面,纯文本文件或一些完全未知的字节序列。因此,对于HTML页面,您获得的只是纯HTML源代码,包括任何客户端脚本。实际上,JavaScripts只是嵌入在<script>标记内的HTML代码中的文本内容。您可以自行执行脚本,就像Web浏览器下载HTML代码后一样!