Javascript将事件注册到对象
我将activex对象加载到html页面中。然后,我使用该activex对象创建另一个对象,但我需要用创建的新对象注册一个事件。该对象需要特定类型的事件侦听器 我可以在c#中加载相同的dll,它可以正常工作。c#的代码如下所示 在javascript中,我有类似的代码,但是我无法将事件注册到对象中Javascript将事件注册到对象,javascript,events,activex,Javascript,Events,Activex,我将activex对象加载到html页面中。然后,我使用该activex对象创建另一个对象,但我需要用创建的新对象注册一个事件。该对象需要特定类型的事件侦听器 我可以在c#中加载相同的dll,它可以正常工作。c#的代码如下所示 在javascript中,我有类似的代码,但是我无法将事件注册到对象中 uploadAction = obj.constructUploadObj(uploadConfig); uploadAction.stateChanged = upload_stateChanged
uploadAction = obj.constructUploadObj(uploadConfig);
uploadAction.stateChanged = upload_stateChanged;
function upload_stateChanged(sender){
writeLine("uploadState changed " + sender.getState());
}
我列举了javascript中uploadAction对象的一些属性,以确保它确实被创建。当我尝试用uploadAction注册事件时,它会抛出一个错误,说“对象不支持此属性或方法”
对我来说,它似乎期待一个强类型事件。在javascript中是否有类似于C#的注册事件
提前感谢。您的javascript应该如下所示:
function uploadAction::stateChanged( parms )
{
// ...
// implementation
// ...
}
请注意,这是一个静态函数声明,假设您有一个名为“uploadAction”的活动X对象。我知道这是可行的-我们在我的公司使用它。错误消息意味着uploadAction不支持stateChanged属性。您的javascript代码看起来是正确的,问题似乎出在您试图将事件处理程序附加到的对象上。我建议使用所述的高级事件注册模型
uploadAction.addEventListener('stateChanged',upload\u stateChanged,false)代码>
注意,您可能需要询问upload_stateChanged
方法的参数,因为第一个参数应该是事件状态。例如:upload\u stateChanged(evt,sender)
..从公司发现这些属性无法通过javascript访问。它们需要外部化,以便在javascript中使用。如果我尝试在JS中编写这样的函数,它将完全崩溃。uploadAction不是activex对象。activex对象让我们假设axObj有一个构造函数axObj.constructUpload,该函数创建uploadAction对象。在uploadAction创建后,我调用了一个函数来验证是否存在某些内容。当我在VS2005中加载dll并引用在c#中创建的upload对象时,stateChanged属性作为一个事件出现,我可以为其分配处理程序函数。如上面代码所示。
function uploadAction::stateChanged( parms )
{
// ...
// implementation
// ...
}