2010-02-12 9 views
5

C'è un prodotto software chiamato AnyChart che è grande per l'incorporamento di grafici basati su Flash nelle pagine web. AnyCharts può anche esportare in formato file PNG. Ecco un esempio:Indy può eseguire 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> 

Il mio obiettivo finale è creare un servizio automatizzato per esportare i grafici AnyChart in formato PNG. Così ho creato un servizio con Indy che chiama le pagine contenenti il ​​javascript AnyChart. Ma il problema sembra essere che Indy non può eseguire il javascript.

Esiste un modo per consentire Indy per eseguire JavaScript?

risposta

7

No, Indy non significa eseguire JavaScript. Avrai anche notato che non analizza né mostra HTML, né esegue Flash. Indy fa i protocolli di rete.

È possibile importare l'oggetto ActiveX Microsoft Script Control e disporre di che esegua Javascript. Se hai bisogno di dettagli su questo, pubblica una nuova domanda.

3

Non è necessario utilizzare Indy per questo. Se vuoi puoi usare TWebBrowser. L'interfaccia IHTMLWindow2 ha la funzione execScript. Quindi puoi:

var 
    Doc : IHTMLDocument2; 
    Win : IHTMLWindow2; 
    aBrowser : TWebBrowser; 
//... 
begin 
    //... 
    Doc := aBrowser.Document as IHTMLDocument2; 
    Win := Doc.parentWindow; 
    Win.execScript('alert(SomeMessage);', 'JavaScript'); 
end; 
+0

Grazie. Dovrò cercare l'interfaccia IHTMLWindow2. –

1

Hai provato a vcl FOR THE web (aka Intraweb atozed)? C'è un wich versione TeeChart è molto utile, è anche possibile eseguire "esterno" codice javascript all'interno di qualsiasi delle TiwForms del vostro web app (lo stesso codice esatto utilizzato in questo momento).

Apri un nuovo domanda se è necessario e sarò felice di aiutare.