Невозможно использовать функции «apply» или «call» более одного раза - PullRequest
0 голосов
/ 03 августа 2011

Я использую библиотеку SHDocVw для открытия и управления экземпляром Internet Explorer из C #.Мне нужно активировать событие onkeyup нескольких текстовых полей.Это код, который я использую:

dynamic userNameTextBox=doc.getElementById(5749).getElementsByTagName("input")[0];
userNameTextBox.value=userName;
userNameTextBox.onkeyup.apply(userNameTextBox);


dynamic passwordTextBox=doc.getElementById(5750).getElementsByTagName("input")[0];
passwordTextBox.value=password;
passwordTextBox.onkeyup.apply(passwordTextBox);

Это работает для первого вызова «apply», но второй вызов выдает ошибку: «System.MissingMemberException: Ошибка при вызове apply.».Эта проблема также возникает, если я использую «вызов» вместо «применить».Однако, если я изменю одну из функций, вызывающих событие, с «apply» на «call», то это сработает - но если я попытаюсь вызвать этот код снова в том же экземпляре моей программы, это вызовет то же исключение.Короче говоря, я не могу использовать «apply» или «call» более одного раза, пока не перезапущу свою программу.

Эта проблема возникает только в Windows XP + IE8.Если я попробую это сделать в Windows7 + IE9, я смогу использовать «apply» / «call» столько раз, сколько захочу.

Могу ли я что-нибудь сделать, что позволит мне использовать «apply» / «call»более одного раза или для вызова событий любым другим способом?

1 Ответ

0 голосов
/ 04 августа 2011

ОК, я справился с обходным путем, вызвав событие через JavaScript из командной строки (AKA "Navigate"), но я все еще думаю, что для этого должно быть решение на основе COM (Interop?) ...

...