话说为什么activex里的事件每多点一次会多调用一次.刷新后又从1开始.解决方法
话说为什么activex里的事件每多点一次会多调用一次...刷新后又从1开始...
ATL的代码更加简单了,就是手动添加的时间生成连接点返回两数相加的和(题外话:vs2008好像没向导添加事件,只能手动注册吧,不知道是不是这里加错了,具体怎么添加的希望告知下)
运行没问题,返回了,问题是点1下,alert弹窗口1次,再点,弹2次了....依次类推...这..这不就没法多次调用了么???
情况就是这么个情况,这是什么巫术???
------解决方案--------------------
calc.attachEvent("AddCompleted", OnAddCompleted);
好像是每调用1次,就增加一个处理函数,并不会覆盖掉以前的
把
document.getElementById('Calc').attachEvent("AddCompleted", OnAddCompleted);
放到add()
外面试试
------解决方案--------------------
搞到javascript 里面了哦, 学习下..
------解决方案--------------------
1楼说得对,attachEvent只需要调用一次就可以了,可以放到控件的onload事件里执行attachEvent,不然你添加了多个事件回调(虽然都是同一个回调)
------解决方案--------------------
恩,楼上说的有道理。
- HTML code
<OBJECT ID="Calc" CLASSID="CLSID:28749B1C-B361-405C-AF85-318ACD9767E9"></OBJECT> <input type="button" value="Add" onclick="add();"/> <script type="text/javascript"> function add() { var calc = document.getElementById('Calc'); calc.attachEvent("AddCompleted", OnAddCompleted); calc.AddAsync(3,4); } function OnAddCompleted(result) { alert(result); } </script>
ATL的代码更加简单了,就是手动添加的时间生成连接点返回两数相加的和(题外话:vs2008好像没向导添加事件,只能手动注册吧,不知道是不是这里加错了,具体怎么添加的希望告知下)
运行没问题,返回了,问题是点1下,alert弹窗口1次,再点,弹2次了....依次类推...这..这不就没法多次调用了么???
情况就是这么个情况,这是什么巫术???
------解决方案--------------------
calc.attachEvent("AddCompleted", OnAddCompleted);
好像是每调用1次,就增加一个处理函数,并不会覆盖掉以前的
把
document.getElementById('Calc').attachEvent("AddCompleted", OnAddCompleted);
放到add()
外面试试
------解决方案--------------------
搞到javascript 里面了哦, 学习下..
------解决方案--------------------
1楼说得对,attachEvent只需要调用一次就可以了,可以放到控件的onload事件里执行attachEvent,不然你添加了多个事件回调(虽然都是同一个回调)
------解决方案--------------------
恩,楼上说的有道理。