Javascript将事件注册到对象
-
03-07-2019 - |
题
我有一个加载到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#的事件?
提前致谢。
解决方案 3
从公司发现这些属性无法通过javascript访问。他们需要将它们外部化以便在javascript中使用。
其他提示
你的javascript应该是这样的:
function uploadAction::stateChanged( parms )
{
// ...
// implementation
// ...
}
请注意,这是一个静态函数声明,假设您有一个名为“uploadAction”的Active X对象。我知道这确实有用 - 我们在公司使用它。
错误消息表示uploadAction不支持stateChanged属性。您的javascript代码看起来正确,问题似乎与您尝试将事件处理程序附加到的对象有关。
我建议使用此处概述的高级事件注册模型。
uploadAction.addEventListener('stateChanged',upload_stateChanged,false);
请注意,您可能需要查询 upload_stateChanged
方法的参数,因为第一个参数应该是事件状态。例如: upload_stateChanged(evt,sender)
...
不隶属于 StackOverflow