2010-02-12 121 views
5

有一個名爲AnyChart的軟件產品,它非常適合在網頁中嵌入基於閃存的圖表。 AnyCharts也可以導出爲PNG文件格式。這裏是一個例子:Indy可以運行Javascript嗎?

<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?

回答

7

不,Indy不執行Javascript。您可能還注意到它不會解析或顯示HTML,也不會運行Flash。 Indy執行網絡協議。

您可以導入Microsoft腳本控制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; 
+0

謝謝。我將不得不搜索IHTMLWindow2接口。 – 2010-02-12 15:08:07

1

你試過vcl的網絡(aka Intraweb atozed)嗎? 有一個很有用的teechart版本,你也可以在你的web應用程序的任何TiwForms(與你現在使用的完全相同的代碼)內執行「外部」JavaScript代碼。

發佈一個新問題,如果你需要,我會很樂意提供幫助。