2010-02-12 3 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, который вызывает страницы, содержащие javascript AnyChart. Но проблема заключается в том, что Indy не может выполнить javascript.

Есть ли способ включить Indy для выполнения javascript?

ответ

7

Нет, Indy не выполняет Javascript. Возможно, вы также заметили, что он не анализирует или не отображает HTML, и он также не запускает Flash. Indy выполняет сетевые протоколы.

Вы можете импортировать объект ActiveX объекта Microsoft Script Control и иметь , что запустите свой 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. –

1

Вы попробовали vcl ДЛЯ ВЕСА (aka Intraweb atozed)? Существует версия teechart, которая очень полезна, вы также можете выполнить «внешний» код javascript в любом из TiwForms вашего веб-приложения (тот же самый код, который вы используете сейчас).

Задайте новый вопрос, если вам нужно, и я буду рад помочь.

Смежные вопросы