不能多次使用“apply”或“call”功能

时间:2011-08-03 11:41:44

标签: c# javascript events internet-explorer-8 shdocvw

我正在使用SHDocVw DLL从C#打开和操作Internet Explorer实例。我需要激活几个文本框的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时出错。”。如果我使用“call”而不是“apply”,也会出现此问题。但是,如果我将其中一个事件调用函数从“apply”更改为“call”,而不是它的工作原理 - 但如果我尝试在我的程序的同一个实例中再次调用此代码,则会抛出相同的异常。 简而言之 - 除非我重新启动程序,否则我不能再使用“apply”或“call”一次。

仅在Windows XP + IE8中出现此问题。如果我在Windows7 + IE9中尝试,我可以根据需要多次使用“apply”/“call”。

我能做些什么可以让我多次使用“apply”/“call”,或以其他任何方式调用事件?

1 个答案:

答案 0 :(得分:0)

好的,我通过命令行(AKA“Navigate”)通过JavaScript调用事件来管理一个变通方法,但我仍然认为应该有一个基于COM(Interop?)的解决方案......