5

有一个名为 AnyChart 的软件产品非常适合在网页中嵌入基于 Flash 的图表。AnyCharts 还可以导出为 PNG 文件格式。这是一个例子:

<script type="text/javascript" language="javascript">
    //<![CDATA[
    var chart = new AnyChart('http://www.mysite.com/swf/AnyChart.swf');
    chart.width = 600;
    chart.height = 300;
    chart.setXMLFile('http://www.mysite.com/anychart.xml');
    chart.addEventListener("draw", function() { saveChartAsImage(chart); });
    chart.write("content-box");
    //]]>
</script>

我的最终目标是制作一项自动化服务,将 AnyChart 图表导出为 PNG 格式。因此,我使用 Indy 提供了一项服务,该服务调用包含 AnyChart javascript 的页面。但问题似乎是 Indy 无法执行 javascript。

有没有办法让 Indy 执行 javascript?

4

3 回答 3

7

不,Indy 不执行 Javascript。您可能还注意到它不解析或显示 HTML,也不运行 Flash。Indy 做网络协议。

您可以导入 Microsoft Script Control ActiveX 对象并让它运行您的 Javascript。如果您需要详细信息,请发布一个新问题。

于 2010-02-12T07:04:48.483 回答
3

您不必为此使用 Indy。如果你愿意,你可以使用 TWebBrowser。IHTMLWindow2 接口具有 execScript 功能。所以也许你可以:

var
  Doc : IHTMLDocument2;
  Win : IHTMLWindow2;
  aBrowser : TWebBrowser; 
//...
begin
  //...
  Doc := aBrowser.Document as IHTMLDocument2;
  Win := Doc.parentWindow;
  Win.execScript('alert(SomeMessage);', 'JavaScript');
end;
于 2010-02-12T09:52:58.597 回答
1

您是否尝试过 vcl FOR THE web(又名 Intraweb atozed)?有一个 teechart 版本非常有用,您还可以在 Web 应用程序的任何 TiwForms 中执行“外部”javascript 代码(与您现在使用的代码完全相同)。

如果您需要,请发布一个新问题,我很乐意提供帮助。

于 2010-02-13T18:24:33.330 回答