0

我有一个加载到 html 页面中的 activex 对象。然后我使用该 activex 对象创建另一个对象,但我需要使用创建的新对象注册一个事件。该对象需要某种类型的事件侦听器。

我可以在 c# 中加载相同的 dll,它会正常工作。c# 的代码如下所示。

upload = obj.constructUploadObj(uploadConfig);
upload.stateChanged += new UploadActionEvents_stateChangedEventHandler(upload_stateChanged);

在 javascript 中,我有类似的代码,但是我无法使用对象注册事件。

uploadAction = obj.constructUploadObj(uploadConfig);
uploadAction.stateChanged = upload_stateChanged;

function upload_stateChanged(sender){
    writeLine("uploadState changed " + sender.getState());
}

我在javascript中列举了uploadAction对象的一些属性,以确保它是真正创建的。当我尝试使用 uploadAction 注册事件时,它会抛出一个错误,提示“对象不支持此属性或方法”。

对我来说,它似乎在期待一个强类型的事件。无论如何在javascript中注册类似于C#的事件吗?

提前致谢。

4

4 回答 4

0

您的 javascript 应如下所示:

function uploadAction::stateChanged( parms )
{
    // ...
    // implementation
    // ...
}

请注意,这是一个静态函数声明,假设您有一个名为“uploadAction”的 Active X 对象。我知道这确实有效 - 我们在我的公司使用它。

于 2008-10-16T16:43:21.077 回答
0

错误消息意味着 uploadAction 不支持 stateChanged 属性。您的 javascript 代码看起来正确,问题似乎出在您尝试将事件处理程序附加到的对象上。

于 2008-10-16T16:44:19.497 回答
0

我建议使用此处概述的高级事件注册模型。

uploadAction.addEventListener('stateChanged', upload_stateChanged, false);

请注意,您可能需要询问upload_stateChanged方法的参数,因为第一个参数应该是事件状态。例如:upload_stateChanged(evt, sender)...

于 2009-01-21T22:24:45.177 回答
0

从公司发现这些属性无法通过 javascript 访问。他们需要将它们外部化以便在 javascript 中使用。

于 2009-05-27T13:23:16.937 回答