论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1841阅读
  • 0回复

[软件资讯]Internet Explorer 11: “请不要再叫我 IE” [复制链接]

上一主题 下一主题
离线pony8000
 

发帖
53392
今日发帖
最后登录
2024-11-15
只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-07-03 15:04:46
:(K JLa]  
微软在上周刚刚发布了用于 Windows 8.1 上的首个 Internet Explorer 11 的预览版,此举是为了回应之前泄漏关于 Internet Explorer 11 的信息。我们已经确认 Internet Explorer 11 中的一些新特性,包括对 WebGL 的支持、预抓取、预渲染、flexbox、mutation observers 以及其他一些 Web 标准的支持。但是更有趣的是,虽然被叫为 Internet Explorer 11,但它已经不再是 IE 了。 ,:{+-v(  
(~NR."s;  
[attachment=183420] /&E]qc*-p  
这也是首次微软真正移除了 Internet Explorer 的一些特性:更改了 user-agent 字符串,这使得很多判断浏览器是否 IE 的代码无法工作,包括有些 JavaScript 的 isIE() 的方法在 Internet Explorer 11 上执行会返回 false。不过好在 Internet Explorer 11 对 Web 标准的支持非常好,因此不再需要之前那些 IE 特定的行为。 5 0dx[v8  
在 Internet Explorer 11 中,user-agent 比之前的版本要短很多,而且去掉了最关键的 MSIE 的关键字: $T_>WUiK  
Internet Explorer 11 的 user-agent:
1            Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko            
jItVAmC=i  
Internet Explorer 10 的 user-agent (on Windows 7):
1            Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)            
VFK]{!C_  
上述 user-agent 你还会注意到增加了 Gecko 的标识,而 Safari 是首个标注了 Gecko 的浏览器。 _=9m [  
之前多数使用 MSIE 来判断是否 IE 浏览器的代码都无法工作,可以改用 Trident 字符串来判断。Trident 标识是在 IE9 中引入的。 \"X_zM  
此外微软还更改了 navigator 对象:
  • FP")$ ,=s  
    navigator.appName 值为 “Netscape”
  • ltv ~Kh  
    navigator.product 值为 “Gecko”
~i]4~bkH2  
这或许是一项开发者的诡计,但该行为的确是在 HTML5 中实际指定的。在 HTML5 中要求这两个属性必须返回上述对应的值,这是一个很奇怪的规定的,更奇怪的是 Internet Explorer 11 遵守了这个规定。 ;3iWV"&_A  
此举导致一些根据 navigator 对象判断浏览器型号的 JavaScript 代码会将 Internet Explorer 11 识别成基于 Gecko 的浏览器。 ^}UFtL i  
]l"9B'XR  
document.all 和 friends <Wd_m?z  
S rhBU6K  
5^{I}Q  
从 IE 4 开始,document.all 在 IE 中举足轻重。比起 document.getElementById() 来说,document.all 是 IE 方式的获取元素的引用的方法。尽管 IE 5 增加对 DOM 的支持,但 document.all 一直沿用至 IE 10。而在 Internet Explorer 11 中终于被废弃了,这意味着在 Internet Explorer 11 中使用 document.all 的方法将可能导致执行失败,尽管使用了 document.all 的代码实际上还是可以工作。[3] hP_{$c{4:g  
另外一个要废弃的是 attachEvent() 方法,该方法用于添加事件处理器,对应的 detachEvent() 用来移除事件处理器。这两个方法将在 Internet Explorer 11 中删除。移除这两个方法需要改用如下逻辑:
1            function addEvent(element, type, handler) {            
2                if (element.attachEvent) {            
3                    element.attachEvent("on" + type, handler);            
4                } else if (element.addEventListener) {            
5                    element.addEventListener(type, handler, false);            
6                }            
7            }            
39x 4(  
当然,建议你优先使用标准的浏览器进行测试以确保不会因为 attachEvent() 的移除而影响代码执行。不过互联网上充斥着各种糟糕的监测代码,你只能确保自己的应用经过良好的标准测试。 OX}ZdM!&f  
被删除的特性还包括:
  • @P">4xVX{  
    window.execScript() – IE 版本的 eval()        
  • u63Q<P<  
    window.doScroll() – IE 用来滚动窗口的方式
  • Z ?ATWCa  
    script.onreadystatechange – IE 方式的脚本加载完成的事件通知
  • uM[[skc  
    script.readyState – IE 方式的测试脚本是否加载完成的状态
  • pS8`OBenA  
    document.selection – IE 方式获取当前选择的文本
  • !>fi3#Fi  
    document.createStyleSheet – IE 方式创建样式单
  • v?o("I[ C  
    style.styleSheet – IE 方式引用样式
lr[&*v?h  
所有这些被废弃的方法都有基于标准的替代方法。如果你使用的是标准的方法那恭喜你,可直接支持 Internet Explorer 11. (\4YBaGd  
6?-,@e  
结论 ?SX0e(+}}  
C9j5Pd5q1L  
$gdGII&n  
看起来 Internet Explorer 11 应该是 Internet Explorer 家族最棒的版本。通过最终移除过去一些魔鬼般的错误,微软正在为大家准备一个真正标准的浏览器。 7'7o^> !  
更新(2013-7-2): document.all 并没有真正被删除,但不推荐使用。
精品软件:百度搜闪电软件园  最新软件百度搜:闪电下载吧
有问题联系 sdbeta@qq.com