我在做网页开发时,碰到了如下一个奇怪的问题,不知道是否是IE的BUG
我在页面中用<object>嵌入了一个第三方的ActiveX控件,并用以下方法绑定了控件的MouseDown事件
<script language="jscript" for="mapshow" event="MouseDown(iButton,iShift,ix,iy)" type="text/javascript">
try{
eveMouseDown(iButton,iShift,ix,iy);
}catch(e){}
</script>
在IE6.0中事件能够正确触发;后来升级到IE6.0+SP1中,调用window.Open方法打开页面时事件不能被触发,经过调试,发现如果打开第一个IE窗口显示此页,事件可以触发;用window.showModalDialog方法打开模式对话框时事件可以触发。而只要打开了IE窗口,再打开IE窗口显示此页时事件就不会被触发,用window.open打开或用window.showModelessDialog打开都不会触发此控件的事件再后来,将IE升级到了7.0,发现在IE6.0+SP1中可触发事件的方法,在IE7.0中都不能触发了。
再一次想办法,用VBScript绑定事件
<script language=vbscript>
sub mapshow_MouseDown(iButton,iShift,ix,iy)
call eveMouseDown(iButton,iShift,ix,iy)
end sub
<script>
IE7.0中,事件在任何情况下都能触发。但现在的问题是:因为这第三方控件的原因,需要在事件中处理异常才能正常工作(如上面的try..catch处理),否则会让IE出现非法访问而关闭。但VBScript中没有异常捕获语句,只有“On Error Resum Next”“On Error GoTo 0”两种语法,不能捕获异常,IE仍会非法关闭。上网根本找不到这类的问题,不知道是否是IE的设置问题还是其它原因。有没有解决方法,使得IE7.0显示页面后能触发事件,也不出错?