Delphi Web Automation Как передать эту переменную в функцию JavaScript - PullRequest
2 голосов
/ 17 ноября 2010

Привет, я пытаюсь автоматизировать выбор поля со списком, а затем скрести результаты. Но у меня проблема с запуском события Combo Box Change, которое не вызывается при простом изменении выбора. Событию onchange присваивается функция JavaScript: что-то вроде этого:

"AFunction(this,'combochange.asp?AVariable=true&')"

Я пытаюсь использовать функцию HTMLWindow.execScript для вызова функции JavaScript (AFunction). Функция использует «this» напрямую

Вопрос: у меня есть ссылка на поле со списком как IHTMLSelectElement. Как передать ссылку на поле со списком для переменной «this» в вызове HTMLWindow.execScript?

Текущий код:

procedure TFormMain.CallComboChange(Doc: IHTMLDocument2; SelectCombo: IHTMLSelectElement);
var
  HTMLWindow: IHTMLWindow2; // parent window of current HTML document
  JSFn: string;             
begin
  HTMLWindow := Doc.parentWindow;
  if not Assigned(HTMLWindow) then
    Exit;
  try
    JSFn := 'AFunction(id_Combo, combochange.asp?AVariable=true&)';  
    HTMLWindow.execScript(JSFn, 'JavaScript'); // execute function
  except
    ShowMessage('Opps exception in javascript call');
  end;
end;

Я также пробовал SelectCombo.OnChange, но это тоже ничего не делает: (

Спасибо.

P.S. это не взлом. Это просто автоматизировать трудоемкую повторяющуюся задачу. Я хочу затем взять результаты и передать их на другой сайт (который у меня все работает нормально)

[Изменить] Смежный вопрос (который может помочь ответить на исходный) - JavaScript является интерпретируемым языком, поэтому ... Когда я вызываю эту функцию, интерпретируется ли строка функции в этой точке? Должно быть, да? Если так, то я думаю, что мне просто нужно перейти в «корень». Что-то вроде:

AFunction (this.form.elements ["имя элемента"], "параметры").

Я не знаю много JavaScript, так это мышление / синтаксис в правильном направлении?

1 Ответ

0 голосов
/ 18 ноября 2010

Ответ таков:

JSFn := 'AFunction(this.form2.elements["id_Combo"], ''combochange.asp?AVariable=true&'')';  

Подсказка была «интерпретирована», поэтому вы просто представляете ее так, как пишете строку исходного кода JavaScript.

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...