老师!有疑问
来源:2-3 创建XMLHttpRequest对象
沉木岩
2020-08-25 19:19:51

老师您好!,请问这段代码是什么意思呢?
遍历ActiveXObject 所有版本,然后 try 测试代码,如果有合适的就breack跳出循环retuan出去,如果没有就
catch(ex){},但是最终都得把结果return出去,catch(ex){ 里面为什么为空呢};这句在里面是什么意思呢?
1回答
好帮手慕久久
2020-08-26
同学你好,由于XMLHttpRequest这个对象,有兼容性问题,在低版本ie浏览器上不支持,所以要对它进行兼容性处理。处理的方法就是在ie浏览器上,使用ActiveXObject对象,因为ie支持ActiveXObject对象,它和XMLHttpRequest对象拥有一样的功能。
而ActiveXObject对象的创建方式,就如同同学理解的那样,列举一些ActiveXObject需要的版本号,哪个版本号可以正确创建ActiveXObject对象,就使用哪个版本号创建出来的ActiveXObject对象,并将该ActiveXObject对象返回。catch方法,是用来捕获一些错误,可以只捕获,不处理,所以catch中可以不写处理错误的代码。如果不写catch方法,try中的语句,一旦发生错误,代码就不会正确往下执行了,如下:
在for循环中,当i=0时,会执行xhr = new ActiveXObject(xhrArr[i]);,如果xhrArr数组中,第一个版本号,不能正确创建xhr对象,那么该句代码就会报错,for循环就不会继续往下执行了,程序直接报错:

而如果使用try catch语句,假如xhr = new ActiveXObject(xhrArr[0])报错,则错误会被catch语句捕捉,程序可以忽视该错误,继续执行下一次for循环,直到找到一个能创建ActiveXObject对象的版本号,正确创建ActiveXObject对象,才会跳出for循环。
对于该点,同学了解即可,这是一种常见的处理XMLHttpRequest对象的兼容性写法。
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
相似问题