Indy能运行JavaScript吗?

5

有一个叫做AnyChart的软件产品,非常适用于在网页中嵌入基于Flash的图表。AnyChart还可以导出为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?
3个回答

7
不,Indy不执行Javascript。你可能也注意到它不解析或显示HTML,也不运行Flash。Indy处理网络协议。
你可以导入Microsoft Script Control ActiveX对象并让它来运行你的Javascript。如果你需要详细信息,请发布一个新问题。

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;

谢谢。我将不得不寻找IHTMLWindow2接口。 - M Schenkel

1
你尝试过vcl FOR THE web(也称为atozed Intraweb)吗? 有一个相当有用的teechart版本,您还可以在Web应用程序的任何TiwForms中执行“外部”JavaScript代码(与您现在使用的完全相同的代码)。
如果需要,请发布一个新问题,我很乐意帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接