Может ли Indy запустить Javascript? - PullRequest
5 голосов
/ 12 февраля 2010

Существует программный продукт под названием AnyChart, который отлично подходит для встраивания диаграмм на основе флеш-графики в веб-страницы. AnyCharts также может экспортировать в формат файла 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, который вызывает страницы, содержащие JavaScript AnyChart. Но проблема, похоже, в том, что Indy не может выполнить javascript.

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

Ответы [ 3 ]

7 голосов
/ 12 февраля 2010

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

Вы можете импортировать объект ActiveX Microsoft Script Control и иметь , который запускает ваш Javascript. Если вам нужны подробности об этом, опубликуйте новый вопрос.

3 голосов
/ 12 февраля 2010

Вам не нужно использовать Инди для этого. Если вы хотите, вы можете использовать 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;
1 голос
/ 13 февраля 2010

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

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

...