描述:
照着VCKbase里杨老师的教材抄了一遍代码(地址是http://www.vckbase.com/document/viewdoc/?id=1539),大致内容就是用Atl支持连接点的方式做个ActiveX,接着我想在IE中将这个事件触发JS函数,JS脚本这么写的:
<script>
function callback(){
alert("OK");
}
function Go()
{
var reg;
reg = new ActiveXObject("ProgID.test);
reg.Result = callback;
reg.Add(1,2);
}
</script>
但是callback怎么都没法触发,这个问题出在哪呢?
Result是连接点,Add是ActiveX的一个方法
解决方案1:
...onreadystatechange = callback,这样的形式是如何实现的呢?
--------
1楼都说了,IDispatch*
ActiveX内部在想要调用callback时,用 IDispatch* 的 Invoke 执行即可...
应该写注册响应函数。
用这种方式生成对象。
<object ... > </object>
看这里
http://hi.baidu.com/huhe/blog/item/817a59ee1ca423f8b3fb95de.html
onreadystatechange 就是一个属性,而不是连接点
解决方案4: 如果仅仅通过脚本来设置回调,Result应该以属性的方式来设置,即Result是一个IDispatch*类型的属性,这是因为js并不支持连接点,vbs是可以的。使用连接点和属性在内部实现上有很大的差别。
另一种可选的做法是在页面里做成一个object元素,然后在标签里设置事件,比如<object ... Result="callback()"></object>