Привет, я пытаюсь автоматизировать выбор поля со списком, а затем скрести результаты. Но у меня проблема с запуском события 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, так это мышление / синтаксис в правильном направлении?