关键词不能为空

当前您在: 主页 > 英语 >

深入解析IE11中被废止的JS方法

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:35
tags:

-

2021年2月28日发(作者:半圆钢)


深入解析


IE11


中被废止的方法




尽管我们已经了解了


Internet Explorer 1 1


中的一些新特性,包括对


WebGL


的支持、


预抓取、预渲染、


flexbox


mutation


observers


以及其他一些


Web


标准的支持,特别是废


弃了一些非标准的方法,这对一些较早开发的应用,产生了严重影响,甚至不能正常使用。


尽管可以使用


IE11


中的兼容性视图,但总 是感觉不太理想。至于到底有哪些变化,不经过


实践验证,总是不能深入。最近,因为项 目需要,升级了前几年开发的一套


WEB


应用系统,

< p>
使其能够适应


IE11


。在升级过程中,较为深入 的了解了


IE11


与较早版本的一些区别,以及


需要修改那些地方才能适应


IE11


。现整理出来一部 分,供需要的同行参考。



IE11


已 经不再是


IE




这也是微软首次真正移除了


Internet


Explorer


的一些特性,


转而对


Web


标准的支持更


好。特别是更改了


user-agent


字符串


这使得很多判断浏览器是否


IE


的代码无法工作,


包括有些


JavaScript



isIE()


的方法在


Internet Explorer 11


上执行会返回


false




IE11


中,


u ser-agent


比之前的版本要短很多,而且去掉了最关键的

MSIE


的关键字(这



IE10


中还有)




Internet Explorer 11



user-agent:


Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko



鉴于此,之前多数使用


MSIE


来 判断是否


IE


浏览器的代码都无法工作。



此外微软还更改了


navigator


对象:


e


值为



“Netscape”,而


t


值为



“Gecko”,


据说这样修改为了满足


HTML5


而进行的,



HTML5



实际指定的。在


HTML5


中要求这两个属性必须返回上述对应的值,显然


IE 11


遵守了这个


规定。此举导致一些根据


nav igator


对象判断浏览器型号的


JavaScript


代码会将


IE11


< br>别成基于


Gecko


的浏览器。下面的代码可以用来判断 不同的浏览器以及他们的版本:



//


浏览器版本信息



= {



BROWSER : (function() {



var u = leLowerCase(),



msie = /(msie) ([d.]+)/,



chrome = /(chrome)/([d.]+)/,



firefox = /(firefox)/([d.]+)/,



safari = /(safari)/([d.]+)/,



opera = /(opera)/([d.]+)/,



ie11 = /(trident)/([d.]+)/,



//match


方法返回的是数组,


0


个元素是匹配的完整表达式,


1



2< /p>


个是匹配的子表达式



b=(msie) ||(chrome)||(firefox)||(safari)||(


opera )||(ie11);



return {NAME: b[1], VERSION: parseInt(b[2])};



})()



}




获取的的时候使用:






N);


//


注意,


IE11

< br>的版本是


trident


,版本是


7




如果仅仅是想判断是不是


IE


(包括早期版本)


,另一种办法是判断 能不能实例化


ActiveXObject


< br>


Var IsIE= !!XObject ||




不被推荐




IE4


开始,




I E


中举足轻重。比起


mentById()



说,



是< /p>


IE


方式的获取元素的引用的方法。尽管


IE5


增加对


DOM


的支持,但




一直沿用至


IE 10


。在


Internet


Explorer


11




并没 有真正被


删除,但不推荐使用。



这种方 法有一个十分讨厌的问题,即当元素只有一个


时,


tName[ 0]


会报出异常,


需要用


tName< /p>


直接获


取;而


mentsByName(


“elementName”)[0]则不会,因此,在你不能确定

有多少个元素时


(有可能没有或者只有一个)


< p>
显然使用


mentsByName


更为

< p>
通用。



attachEvent()

< p>
方法被废弃



该方法用于添加事件处理器,对应的


detachEvent()


用来移除事件处理器。这两个方


法将在


Internet Explorer 11


中删除。移除这两个方法需要改用如下逻辑:




其他被删除的特性还包括:



ript()



IE


版本的


eval()


ll()



IE


用来滚动窗口的方式



ystatechange



IE< /p>


方式的脚本加载完成的事件通知



tate



IE

方式的测试脚本是否加载完成的状态



ion

< p>


IE


方式获取当前选择的文本,改


ection()


StyleSheet



IE


方式创建样式单



heet



IE

方式引用样式



所有这些被废弃的方法都有基于标准的替代方法。




HTML


书写严格规范



早期的浏览器版本,能够容忍一些


HTML


代码的不 规范。如


style=


”display:none”,


不能写成


style=


”display:‘ none’”。这种写法在


IE


较早版本没有问题,

< p>
IE11


不行了。



innerText


不被推荐使用


< /p>


以前,我们经常使用


innerText


来获取元素所包含的文本内容,如获取单元格内容用



Eleme ntById(“td”).innerText,IE11


中已经不被推荐使用了。< /p>


innerText


其本身就是微软自己发明的东东,改邪归正总 是好的,取代的办法是改用


innerHTML


。但需


要注意的是,如果含有子标签,


innerHTML

会将子标签一块输出的。如:



< br>id=”mytd”


>1234


memtById(“mytd”).innerHTML


的输出值为 :



1234

< br>元素的


id



name


同时存在



如果元素只有


id


,没有


name,mentsByName()


会为空,引发异常。在


ie10


以前版本,


mentsByName()


取不到


nam e


,就会去取


id


,只要


id


存在


就可以。


IE11


显然要求更加规范。



firstCh ild



nextSibling


在 标准的


javascrip


中,空格(缩进的空格)也被算作节 点,因此经常性会有空节点,


如:









1234 5678


这时使用



ElementById(“tb”).firstChild.


TML


时,


会报对象为空异常,这在


IE


以前版本是可以取到值


1234


的。



解决办法:



1




使用< /p>


mentById(“tb”).pe


进行判断,



3



是空格



2





ElementsById(“tb”).

< br>getElementsByTagName(


d


inn erHTML


来代替



3




同样道 理,


nextSibling


用来获取同级节点的下一个节点, 以前可以用




ElementById (“tb”).firstChild. nextSibling


.innerHTM L


来获取


5678


,现在需要用循环或 数组来获取下一个节点的内容:




ElementsById(“tb”).

< br>getElementsByTagName(


4




使用


Jquery


没有这个问题,会自动去掉空格节点



不再支持


Expression


IE 5


及其以后版本支持在


CSS


中使用< /p>


expression


,用来把


CSS< /p>


属性和


Javascript


表达


式关联起来,这里的


CSS


属性可以是元素固 有的属性,也可以是自定义属性。就是说


CSS


属性后面可以是 一段


Javascript


表达式,


C SS


属性的值等于


Javascript


表达式计算的结果,


这看起来是一件十分美妙的事情,可以帮助我们处理很多事情,但


CSS Expression


的问题


就在于它的计算频率要比想象的多出很多。


不仅仅是在页面显示和缩放时,


就是在页面滚动、


乃至移动鼠标时都会要重新计算一次,

对浏览器性能还是有压力的。


现在,


这样的事在

< p>
ie11


终结了。在


ie11

中不能使用了,需要将


JS


代码或函数移到外边来。



onscroll


滚动条事件



IE


早期版本中,把


onscroll


放在


body


中是可以执行的,例如:




=” myFunction()”>



现在


IE11


中不行了。需要单独注册监听,例如写成:



ll = function(){



myFunction();


}

-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:35,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/678961.html

深入解析IE11中被废止的JS方法的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文