IE11浏览器:请不要再叫我IE,谢谢

这篇对自已挺有用的,特mark一下,纯转载。

转载自:nczonline

微软在上周刚刚发布了用于Windows 8.1上 的首个Internet Explorer 11的预览版。我们已经确认Internet Explorer 11中的一些新特性,包括对WebGL的支持、预抓取、预渲染、flexbox、mutation observers以及其他一些Web标准的支持。但是更有趣的是,虽然被叫为Internet Explorer 11,但它已经不再是IE了。

这也是首次微软真正移除了Internet Explorer的一些特性:更改了user-agent字符串,这使得很多判断浏览器是否IE的代码无法工作,包括有些JavaScript的 isIE()的方法在Internet Explorer 11上执行会返回false。不过好在Internet Explorer 11对Web标准的支持非常好,因此不再需要之前那些IE特定的行为。

在Internet Explorer 11中,user-agent比之前的版本要短很多,而且去掉了最关键的MSIE的关键字:

上述user-agent你还会注意到增加了Gecko的标识,而Safari是首个标注了Gecko的浏览器

之前多数使用MSIE来判断是否IE浏览器的代码都无法工作,可以改用Trident字符串来判断。Trident标识是在IE9中引入的。

此外微软还更改了navigator对象:

• navigator.appName值为“Netscape”

• navigator.product值为“Gecko”

这或许是一项开发者的诡计,但该行为的确是在HTML5中实际指定的。在HTML5中要求这两个属性必须返回上述对应的值,这是一个很奇怪的规定的,更奇怪的是Internet Explorer 11遵守了这个规定。

此举导致一些根据navigator对象判断浏览器型号的JavaScript代码会将Internet Explorer 11识别成基于Gecko的浏览器。

document.all和friends

从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的代码实际上还是可以工作。

另外一个要废弃的是attachEvent()方法,该方法用于添加事件处理器,对应的detachEvent()用来移除事件处理器。这两个方法将在Internet Explorer 11中删除。移除这两个方法需要改用如下逻辑:

当然,建议你优先使用标准的浏览器进行测试以确保不会因为attachEvent()的移除而影响代码执行。不过互联网上充斥着各种糟糕的监测代码,你只能确保自己的应用经过良好的标准测试。

被删除的特性还包括:

所有这些被废弃的方法都有基于标准的替代方法。如果你使用的是标准的方法那恭喜你,可直接支持Internet Explorer 11.

结论

看起来Internet Explorer 11应该是Internet Explorer家族最棒的版本。通过最终移除过去一些魔鬼般的错误,微软正在为大家准备一个真正标准的浏览器。

更新:document.all并没有真正被删除,但不推荐使用。

时间: 2024-10-10 04:22:00

IE11浏览器:请不要再叫我IE,谢谢的相关文章

微信公众号开发,微信手机端一直提示该公众号暂时无法提供服务,请稍候再试

遇到这个问题,一直在找原因,百度了很多,排除了防火墙,以及策略的问题,还有微信服务器屏蔽了IP. 之前的项目都是相同的代码,但是这次是另外一个项目,部署到客户那边,微信的消息管理,无法接收消息.(即微信服务器无法POST到配置好的URL上) 后面发现在客户的服务器上面,用域名和外网的IP无法访问,而在外网却可以用域名访问,而外网IP的也不能访问,当时一脸懵逼,好在经过公司的小伙伴一眼就看出了可能是代理服务器的问题.用cmd命令查看了下,发现是经过多层才能访问得到. 运行cmd,输入tracert

微信H5支付 提示"网络环境未能通过安全验证,请稍后再试"

按照官方https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4# 接入微信的H5支付,提示"网络环境未能通过安全验证,请稍后再试",经排查发现服务器有前端机子,原先获取IP的方法有误,不能正确获取客户的IP.更改获取IP的方法,问题解决. 附获取IP的PHP函数: function ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CL

ie11浏览器和chrome浏览器对于bgsound和background的一些区别

今天在编写一个非常简单的网页的时候,按照书上写的,使用了一个jpg图片作为背景图片,用background属性放在<body>标签内,同时使用<bgsound>标签插入背景音乐.代码如下: 1 <html> 2 <head> 3 <title>QQ空间开场音乐</title> 4 </head> 5 <body background="123.jpg"> 6 <bgsound src=

“服务器正忙,请稍后再试”常见原因及解决方法?

在网站运维过程中,常会遇到访客反映“服务器正忙,请稍后再试”错误提示,实际上不论是web服务器,游戏服务器,邮件服务器,又或者是软件服务器等,都会遇到诸如“服务器正忙,请稍后再试”类的问题.  游戏服务器正忙  这里就详细列举“服务器正忙,请稍后再试”错误现象常见的原因及相应的解决方法: 1.本地网络配置问题: 本地网络配置问题,包括本地dns服务器配置,浏览器配置等,如果配置不当,都常会出现“服务器正忙,请稍后再试”的错误提示. 解决方法是:根据访问服务器的情况,正确配置本地dns及浏览器相关

&quot;该公众号提供的服务出现故障,请稍后再试&quot;

"该公众号提供的服务出现故障,请稍后再试"解决对策:通过浏览器直接访问内网透射的url.比如:http://j3vd9j.natappfree.cc/jeewx-oschina发现提示:Tunnel j3vd9j.natappfree.cc not found.则说明内网透射有误.重新配置即可.[注:NETAPP官网提示对免费隧道不定时强制更换域名/端口] 附带网友的其他解决方法:(1)有人说 302 跳转会导致验证通过,而无法收到消息!最后把接口单独写了,不放在 controller

sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法

昨晚配置完成office web apps 2013的外部网络访问之后,今天发现了一个很奇怪的问题,就是IE 11不支持文档在线浏览,找了很多方法,打补丁什么的,都不管用,最后在预览文件的页面,看到<head>标签,里面有一句代码: <meta http-equiv="X-UA-Compatible" content="IE=99" /> 我把他改成了 <meta http-equiv="X-UA-Compatible&quo

微信发送消息后显示该公共号暂时无法提供服务,请稍后再试!

用户发送信息,公众账号会提示"该公众号暂时无法提供服务,请稍后再试".遇到这个问题,我们可以排除一下是否我们返回的数据有问题. 首先代码返回一个空的字符串,如果还是出现这样的提示,请看看签名验证是否失败,调试一下,看看log.     如果没有出现这样的提示,说明我们返回的结果格式有问题. 下面参考一下我返回的错误格式: <xml> <toUserName><![CDATA[o_ZKtuBGHyFi2YcpSKlugRAomGrU]]></to

微信支付出现支付请求参数错误,请核实再试或交易出错,请稍后再试的可能原因

微信支付经常会出现有些奇怪找不到原因的问题,下面就是其中的一个例子当你的微信支付出现 “支付请求参数错误,请核实再试”或 “交易出错,请稍后再试”的错误的时候,不访从下面几点找原因1,确保你的微信的app_id,app_secret,parent_id,parent_key,parent_sign_key的信息是否填写正确了.2,请检查package的参数是否错误或为空等情况,具体设置可参考开发文档.3,微信的金额是以分为单位的,所以请检查一下你传入的金额最小值是不是大于1(千万不要传小数点进去

微信公众开发平台报错:该公众号暂时无法提供服务请稍后再试 的解决方案

当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务. 假如服务器无法保证在五秒内处理并回复,必须直接回复空串(是指回复一个空字符串,而不是一个XML结构体中content字段的内容为

sqlserver数据库脱机时发生异常:由于无法在数据库 &#39;SMS&#39; 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

sqlserver数据库脱机时发生异常,如下: =================================== 设置脱机 对于 数据库“SMS”失败.  (Microsoft.SqlServer.Smo) ------------------------------ 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500.0+((KJ_PCU_Main).110