云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 深入解析IE11中被废止的JS方法

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

  • 62 次阅读
  • 3 次下载
  • 2025/6/5 14:37:46

Form中

上面这样的按钮如果在form之外,没有什么问题,但如果在form中,在IE较早版本没发现什么,点击仅仅执行myFunction()函数,但是在IE11中,问题严重了,点击此按钮,不但执行myFunction()函数,而且立马提交form表单。如果你设定了提交严查,这样的提交根本不会被检查而直接提交,你敢说问题不严重?解决的办法是使用来代替。

另外,在早前版本中,下面的用法是可以正常显示的

IE11不能这样写了,要写成下面这样才能正常显示:

window.ActiveXObject

在IE早期版本中,window.ActiveXObject返回是true,IE11中不是这样了,返回的是一串这样的字符:function ActiveXObject(){[nativ code]},显然,仅以此来判断是不是IE肯定不行了,考虑到对早期IE版本的兼容性,在创建ajax实例对象时,建议使用下面的方法来判断:

if(!!window.ActiveXObject || \http_request = new ActiveXObject(\}else{

http_request = new XMLHttpRequest(); }

框架页JS函数的执行问题

在框架页上,如果有自动执行的JS函数,要放在页面的上面部分,不能放在最后面,否则不能自行启动。这种情况在IE早期版本中并无问题,在IE11中却不行。参见下图:

写在这里才行 自启动函数写在这里不能自动运行

window.navigate不被推荐

window.navigate(url)在IE11中将不再推荐使用但仍然可以用,建议改用标准window.location.href =url来实现页面跳转或者刷新。

关于scroll处理滚动条

控制页面是否出现滚动条,可以使用,但这个属性方法我并未在W3C标准中找到,但在IE11中确实是可用的。尽管如此,我还是建议使用更为通用的办法:

//去掉竖滚动条 //去掉横滚动条 //全部去掉

或者使用css:body{ overflow:auto; overflow-x:hidden}

关于获取CSS内部属性

之前的IE版本只能使用下面方法获取元素内部css的属性值: var computedStyle = obj.currentStyle; alert(computedStyle.paddingLeft);

现在,IE11已经支持标准的js方法,同时也保留了原来的方法

var computedStyle = document.defaultView.getComputedStyle(obj, null); alert(computedStyle.paddingLeft);

如果考虑到对以前版本的支持,可以同时使用这两种方法。

关于获取元素宽度长度计算的问题

在IE10之前的版本中,使用document.getElementById(“name”).style.width等方法获得的数据为数值型,因此可以相加减;IE11则采用标准做法,返回的是数字+px,是个字符串,不能直接做加减法了,需要使用replace将“px”去掉后再进行数学计算。

关于select 中size与height

在早期IE版本中,select多行列表时,size可以与height同时存在,但会以size为主,也就是说,浏览器会取这两个值中较大的一个(size会被换算为高度px值)。IE11中情况发生变化了,height会被优先采用,而不会考虑size,因此这两个值设置时要注意,有size时,不要再设置height了。

不再支持VBScript

从IE11开始已经不再支持VBScript作为前端脚本了,所以很遗憾,要么把IE降级,要么改用javascript。

关于使用CSS实现渐变

在IE11以前,ie有自己的渐变滤镜,即

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff',endColorstr='#378de5',GradientType=0)

在IE11已经不支持这个滤镜了,改为使用:

background:-ms-linear-gradient(top, #79bbff 5%, #378de5 100%); 一般情况下,为了适应各类型浏览器,建议使用以下CSS .linear{

background:-webkit-gradient(linear, left top, left bottom, color-start(0.05, #79bbff), color-stop(1, #378de5));

background:-moz-linear-gradient(top, #79bbff 5%, #378de5 100%); background:-o-linear-gradient(top, #79bbff 5%, #378de5 100%); background:-ms-linear-gradient(top, #79bbff 5%, #378de5 100%); background:linear-gradient(to bottom, #79bbff 5%, #378de5 100%); background:-webkit-linear-gradient(top, #79bbff 5%, #378de5 100%);

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff',endColorstr='#378de5',GradientType=0); }

IE11不再支持条件性注释

IE11不再支持条件性注释,下面代码不会被执行

showModalDialog打开框架页窗口太小

IE11中,使用showModalDialog(也包括showModalLessDialog)时,窗口很小(有框架的页),并且设置dialogHeight:和dialogWidth均不管用,不知道为什么,我的处理办法是要么改成window.open()来代替,要么在框架页中加上

这实际上是告诉浏览器,回退到ie7去处理该页面,这显然并不理想。

网上有种说法:“这其实是标准的问题,ie11更加标准化,frameset走的是 XHTML 1.0 Frameset,如果用其它协议可能出现此类问题,把Frameset 页面的DOCTYPE改为frameset协议或者直接把DOCTYPE 这一行删除即可。”

对此,我试了试,没好使。想必showModalDialog毕竟是IE独有的东西,一直没纳入W3C标准,或许未来某一天就被废弃了。看来,还是少用为妙。

突然想到可不可以在被打开的页面中,使用下面代码控制或者resize()以下,我不想用了,所以没有试过行不行,感兴趣的朋友可以试一下:

html5删除了frame 和 frameset

这个本来和IE11没啥关系,但既然碰到了这个问题,同时也怀疑前面的那个问题可能与此有关,也写在这里吧。

html5删除了frame 和 frameset等元素,添加了article、detailist、figure、footer、header、nav、section、source等新元素。但iframe被保留了,至于保留到什么时候,没人知道。

有人建议使用div+css(主要是div的float属性来布局)或者iframe来代替frameset。但iframe仅被有限支持,只有一个属性src,其他属性不行了。

动态部分可以使用Ajax实现,因此已经没有必要使用框架了 也有人建议使用jquery的方法来动态加载: $(\页面就可以了。

个人觉得,frame以及frameset还是很好用的,布局方便,局部更新方便,确实应该保留才对。

关于checkbox的选中问题

在IE以前版本中,document.getElementById(“checkbox_id”).checked就可以表示被选中,IE10以后版本不行,需要明确:

document.getElementById(“checkbox_id”).checked=true

属性

IE11以前版本,文本默认是在左侧的,现在则默认居中,要使其局左,须明确写明

禁止退格键返回上一页

禁止退格键返回上一页的功能(当input为readonly时),原来的写法在IE11中不灵了,参考网上的资料,重写了下面方法:

document.onkeydown = function(e){//适合ie和chrome,其他的用onkeypress var keyEvent; if(e.keyCode==8){

var d=e.srcElement||e.target;

if(d.tagName.toUpperCase()=='INPUT'||d.tagName.toUpperCase()=='TEXTAREA'){ keyEvent=d.readOnly||d.disabled; }else{

keyEvent=true; } }else{

keyEvent=false; }

if(keyEvent){

e.preventDefault(); } }

JS中getYear()与getFullYear()

这两个方法在IE11早期版本中都会返回当前本地年份,如2016,但在IE11中不行了,显然IE11遵循了js标准,要想获得yyyy格式的年份,必须使用getFullYear(),而getYear()返回的是1900年以来的年代差,相差1900年,可以简单理解为getFullYear()=getYear()+1900

搜索更多关于: 深入解析IE11中被废止的JS方法 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Form中按钮 这是按钮 上面这样的按钮如果在form之外,没有什么问题,但如果在form中,在IE较早版本没发现什么,点击仅仅执行myFunction()函数,但是在IE11中,问题严重了,点击此按钮,不但执行myFunction()函数,而且立马提交form表单。如果你设定了提交严查,这样的提交根本不会被检查而直接提交,你敢说问题不严重?解决的办法是使用来代替。 另外,在早前版本中,下面的用法是可以正常显示的 IE11不能这样写了,要写成下面这样才能正常显

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com