luckspirit 发表于 2013-7-3 11:33

Internet Explorer 11: “请不要再叫我 IE”

<p>&nbsp;&nbsp;&nbsp; 微软在上周刚刚发布了用于Windows 8.1上的首个Internet Explorer
11的预览版,此举是为了回应之前泄漏关于Internet Explorer 11的信息。我们已经确认Internet Explorer
11中的一些新特性,包括对WebGL的支持、预抓取、预渲染、flexbox、mutation observers
以及其他一些Web标准的支持。但是更有趣的是,虽然被叫为 Internet Explorer 11,但它已经不再是IE了。</p>
<p align="center"><a href="http://www.ibmnb.com/batch.download.php?aid=49803" target="_blank"><img src="http://www.ibmnb.com/attachments/2013/07/1280348_201307031131541IS88.png" border="0"></a></p>
<p>&nbsp;&nbsp;&nbsp; 这也是首次微软真正移除了Internet Explorer的一些特性:更改了user-agent 字符串,
这使得很多判断浏览器是否IE的代码无法工作,包括有些 JavaScript 的 isIE() 的方法在Internet Explorer
11上执行会返回 false。不过好在Internet Explorer 11对Web标准的支持非常好,因此不再需要之前那些IE特定的行为。</p>
<p>&nbsp;&nbsp;&nbsp; 在Internet Explorer 11中,user-agent 比之前的版本要短很多,而且去掉了最关键的MSIE的关键字:</p>
<p>&nbsp;&nbsp;&nbsp; Internet Explorer 11 的 user-agent:</p>
<p><em>&nbsp;&nbsp;&nbsp; Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko</em></p>
<p>&nbsp;&nbsp;&nbsp; Internet Explorer 10 的 user-agent (on Windows 7):</p>
<p><em>&nbsp;&nbsp;&nbsp; Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)</em></p>
<p>&nbsp;&nbsp;&nbsp; 上述user-agent你还会注意到增加了Gecko的标识,而Safari是首个标注了Gecko的浏览器。</p>
<p>&nbsp;&nbsp;&nbsp; 之前多数使用 MSIE 来判断是否IE浏览器的代码都无法工作,可以改用Trident 字符串来判断。Trident标识是在IE9中引入的。</p>
<p><strong>&nbsp;&nbsp;&nbsp; 此外微软还更改了navigator 对象:</strong></p>
<p>&nbsp;&nbsp;&nbsp; navigator.appName 值为 “Netscape”</p>
<p>&nbsp;&nbsp;&nbsp; navigator.product 值为 “Gecko”</p>
<p>&nbsp;&nbsp;&nbsp; 这或许是一项开发者的诡计,但该行为的确是在 HTML5 中实际指定的。在 HTML5 中要求这两个属性必须返回上述对应的值,这是一个很奇怪的规定的,更奇怪的是Internet Explorer 11遵守了这个规定。</p>
<p>&nbsp;&nbsp;&nbsp; 此举导致一些根据navigator 对象判断浏览器型号的JavaScript 代码会将Internet Explorer 11识别成基于Gecko的浏览器。</p>
<p><strong>&nbsp;&nbsp;&nbsp; document.all和friends</strong></p>
<p>&nbsp;&nbsp;&nbsp; 从IE4 开始,document.all 在IE中举足轻重。比起 document.getElementById()
来说,document.all 是IE方式的获取元素的引用的方法。尽管IE5增加对DOM的支持,但 document.all
一直沿用至IE10。在Internet Explorer 11中document.all 并没有真正被删除,但不推荐使用。</p>
<p>&nbsp;&nbsp;&nbsp; 另外一个要废弃的是 attachEvent() 方法,该方法用于添加事件处理器,对应的 detachEvent() 用来移除事件处理器。这两个方法将在Internet Explorer 11中删除。移除这两个方法需要改用如下逻辑:</p>
<p align="center"><img alt="Internet Explorer 11:请不要再叫我IE" src="http://news.mydrivers.com/img/20130703/a9bb8727e6a54f40b2ff1c9b3d7c4061.png" style="border-top: black 1px solid; border-right: black 1px solid; border-bottom: black 1px solid; border-left: black 1px solid"></p>
<p>&nbsp;&nbsp;&nbsp; 当然,建议你优先使用标准的浏览器进行测试以确保不会因为 attachEvent() 的移除而影响代码执行。不过互联网上充斥着各种糟糕的监测代码,你只能确保自己的应用经过良好的标准测试。</p>
<p><strong>&nbsp;&nbsp;&nbsp; 被删除的特性还包括:</strong></p>
<p>window.execScript() –IE版本的 eval()<br>
window.doScroll() –IE用来滚动窗口的方式<br>
script.onreadystatechange –IE方式的脚本加载完成的事件通知<br>
script.readyState –IE方式的测试脚本是否加载完成的状态<br>
document.selection –IE方式获取当前选择的文本<br>
document.createStyleSheet –IE方式创建样式单<br>
style.styleSheet –IE方式引用样式</p>
<p>&nbsp;&nbsp;&nbsp; 所有这些被废弃的方法都有基于标准的替代方法。如果你使用的是标准的方法那恭喜你,可直接支持Internet Explorer 11。</p>
<p><strong>&nbsp;&nbsp;&nbsp; 结论:</strong></p>
<p>&nbsp;&nbsp;&nbsp; 看起来Internet Explorer 11应该是 Internet Explorer 家族最棒的版本。通过最终移除过去一些魔鬼般的错误,微软正在为大家准备一个真正标准的浏览器。</p>

nbmmnn 发表于 2013-7-3 11:45

网银支付
还有淘宝转网银支付跳转不过去
记得前几个ie版本存在

沙漠Yan 发表于 2013-7-3 12:53

还没试用
页: [1]
查看完整版本: Internet Explorer 11: “请不要再叫我 IE”