2010-02-12 20 views
5

Hay un producto de software llamado AnyChart que es ideal para incrustar gráficos basados ​​en Flashed en páginas web. AnyCharts también puede exportar al formato de archivo PNG. He aquí un ejemplo:¿Puede Indy ejecutar 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> 

Mi objetivo final es hacer un servicio automatizado para exportar las tablas AnyChart a formato PNG. Así que hice un servicio con Indy que llama a páginas que contengan AnyChart javascript. Pero el problema parece ser que Indy no puede ejecutar el javascript.

¿Hay alguna manera de permitir que Indy ejecute javascript?

Respuesta

7

No, Indy no ejecuta Javascript. También puede haber notado que no analiza ni muestra HTML, y tampoco ejecuta Flash. Indy hace protocolos de red.

Puede importar el objeto ActiveX de Microsoft Script Control y tener que ejecute su Javascript. Si necesita detalles sobre eso, publique una nueva pregunta.

3

No necesita usar Indy para esto. Si lo deseas, puedes usar TWebBrowser. La interfaz IHTMLWindow2 tiene la función execScript. Entonces puede ser usted puede:

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

Gracias. Tendré que buscar la interfaz IHTMLWindow2. –

1

¿Ha intentado vcl PARA LA web (aka Intraweb atozed)? Hay una versión de teechart que es bastante útil, también puedes ejecutar código javascript "externo" dentro de cualquiera de los TiwForms de tu aplicación web (el mismo código exacto que estás usando ahora).

Publique una nueva pregunta si es necesario y estaré encantado de ayudarle.