话说为什么activex里的事件每多点一次会多调用一次.刷新后又从1开始.解决方法

话说为什么activex里的事件每多点一次会多调用一次...刷新后又从1开始...
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,不然你添加了多个事件回调(虽然都是同一个回调)
------解决方案--------------------
恩,楼上说的有道理。