我开发了一个c#库,注册为COM组件。现在我需要使用Javascript将创建的ActiveX导入到html页面中以使用ActiveX功能。除了回调之外,一切都很好,可能我缺乏 Javascript 知识,但我仍然无法正确使用回调。我搜索了很多例子,但有些对于我的目标来说太深了,而另一些则无法阐明要点,所以这里是问题。
我会解释一下自己:
这是ActiveX组件中的事件
public delegate void ButtonEvent(object sender, SignEventArgs e);
public event ButtonEvent ButtonSignOk;
这是我的 Javascript 片段
try {
var Lib = new ActiveXObject("AGI.GraphometricLib");
Lib.Initializer();
Lib.addEventListener('ButtonSignOk', OnOkHandler, false);
} catch (ex) {
alert("Error: " + ex.message);
}
function OnOkHandler(arg1, arg2){
alert("Pressed!");
}
显然addEventListener返回错误。
Error: Object doesn't support property or method 'addEventListener'
如何为 ActiveX 中定义的事件正确设置 JavaScript 回调?
最佳答案
ActiveX 对象的事件处理程序可以使用以下语法编写:
function Lib::ButtonSignOk(sender, e) {
alert("Pressed!");
}
但是,有一个问题。 Javascript 的本质是
- 函数声明先于文件中的其他内容进行评估
- 此函数声明被解释为向
Lib
引用的对象添加一个事件处理程序,该对象在文件开头并不存在。
解决方案是强制在变量初始化之后评估函数声明,例如:
var Lib = new ActiveXObject("AGI.GraphometricLib");
Lib.Initializer();
(function() {
function Lib::ButtonSignOk(sender, e) {
alert('Pressed!');
}
})();
关于javascript - ActiveX 事件和 Javascript 回调注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298754/