Имя: Пароль:
1C
1C 7.7
v7: Как запустить функцию onchange()
0 DES
 
17.07.18
17:34
запускаю через
objIE = СоздатьОбъект("InternetExplorer.Application");
страницу, там есть поле, при изменении которого нужно запустить джавускрипт

<select name="ctl00$ContentPlaceHolder1$DropDownList2" tabindex="1" class="form-control" id="ContentPlaceHolder1_DropDownList2" style="color:Blue;font-size:Medium;" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$DropDownList2\',\'\')', 0)">

програмно меняю
tabindex="12"
а как запустить onchange= ?
1 Вафель
 
17.07.18
18:09
ну запусти вот это
__doPostBack(\'ctl00$ContentPlaceHolder1$DropDownList2\',\'\')
2 DES
 
17.07.18
20:40
К какому объекту ?

objIE.__doPostBack(\'ctl00$ContentPlaceHolder1$DropDownList2\',\'\')  ?
3 DES
 
18.07.18
18:47
для памяти, нужно было так:
ElementByID = "List2";
IE0.document.getElementByID(ElementByID).value = 2;
IE0.document.getElementByID(ElementByID).document.parentWindow.eval(IE0.document.getElementByID(ElementByID).getAttributeNode("onchange").value);

кнопку нажать так:
ElementByID = "BtnSearch";
IE0.document.getElementByID(ElementByID).click();
4 DES
 
18.07.18
21:06
чудеса
под 8.3 работает
под 7.7
дает ошибку eval()
5 Сияющий в темноте
 
18.07.18
23:01
В 7.7 проблема с передачей параметров в функции оле,она создает дополнительные переменные иикопирует в них значения,что иногда приводит к искажениям.
опять же,1с и ослик,работают в разных потоках,поэтому,если мы от осла хотим ответа,нужно ждать,чтобы он был не занят,Busy,по мойму,функция
и осел из под семерки работает так,что семерка может прочитать и записатт переменные в коде сценария в момент его исполнения,что восьмерка и другие программы не могут и не имеют права делать.
6 DES
 
19.07.18
14:28
затуп в том что eval() не находится под 7-кой даже с минутной паузой
7 DES
 
19.07.18
14:37
оказалось что eval() нужно заменить на ExecScript()
Программист всегда исправляет последнюю ошибку.