怀集领域网

服务热线:0758-5598879

商务合作:13432420229

搜索
猜你喜欢
查看: 1056|回复: 3

[诠释] IE9 rc版软件兼容问题

[复制链接]
发表于 2011-5-17 14:39:18 | 显示全部楼层 |阅读模式
ie9 rc版软件兼容问题

ie9 rc新版中javascript有了很多改变,主要是为了兼容W3C标准。
本来是好事,不过也产生了一些“副作用”:
目前有些软件(特别是ie外壳浏览器)中使用了稍复杂的js脚本来做界面或软件控制,
对于这类软件,如果使用的js太有特色,就有可能引起软件崩溃问题。

1.document.createElement_x函数
在ie9 preview版或之前,可以做如下使用:
  document.createElement_x():默认创建XML空标签。
  document.createElement_x(合法的html):创建给定html元素。
这两种使用方式在ie9 rc中不可用。
只能用document.createElement_x('div')之类的表达式,并且在用outerHTML返回的标签都是小写字母。

2.原生函数赋值:
原生的函数不允许直接附值给变量,例如:
模仿prototype的写法:
  var $=document.getElementByIdx_x;在ie9 preview及之前版本都是可以的,在ie9 rc中是不合法的,
只能用:
  var $=function(s){return document.getElementByIdx_x(s)};
类似的“技巧”会导致问题。

3.变量定义:
用var i;定义变量,如果为了格式对齐将语句中空格用tab代替,会发生错误。

4.dom自定义属性:
在ie9 preview及以前版本中dom元素可直接用"="操作,如:
  var o=document.getElementByIdx_x('someid');
  o.myprop='strange';
  var s=o.myprop;
而在ie9 rc中这样的写法什么都得不到,都是浮云。
只能用setAttribute/getAttribute来操作dom元素自定义属性。
这可能也是ie9中js速度更快的原因之一:牺牲可用性,提高效率。

5.firstChild/lastChild/previewSibling/nextSibling/childNodes:
在ie9 preview/rc中,解析html时会经常生成些预料之外的#text元素,
会导致用一些标准的dom操作函数得到的并非是你想要的东东,如:
  var o=document.getElementByIdx_x('someid').firstChild;
  在变量o中得到的很可能是个#text,而不是你真正想要的东东。



参考:
Angle Brackets Are Not Allowed in the createElement_x Method

http://msdn.microsoft.com/en-us/library/ff986077(v=VS.85).aspx
发表于 2011-5-17 14:50:00 | 显示全部楼层
看不懂,{:7_175:}
发表于 2011-5-17 14:58:21 | 显示全部楼层
咁专业{:7_192:}
广告招租
 楼主| 发表于 2011-5-17 20:54:11 | 显示全部楼层
FBI 发表于 2011-5-17 14:58
咁专业

很容易而已。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表