我是靠谱客的博主 动听小懒猪,最近开发中收集的这篇文章主要介绍eval语法报错 ie10_IE10的那些坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

IE10的坑

1、XML的坑

2、UserAgent改变带来的影响

3、移除了对条件注释的支持

4、Flash的不完整支持

5、IE9的改变

随着W in8的推出,IE10也跟着现身了,现在IE10又增加了对win7的支持,那么新的浏览器又有那些新特性呢?作为一个一直以来都问题颇多的IE浏览器来说,这一版本又有多少改变?现在咱们来看看

改变最大的是它越来越网W3C标准去靠近了,比如从IE9就已经实现的对DOM L2,DOM L3和DOM L2和L3事件处理(包括冒泡模型)的完整支持,以及增加了对Html5和CSS3的支持。

在拥抱W3C的同时,它也就抛弃了之前的很多独有的东西

1. XML的坑

上次遇到的,IE之前对通过XMLHttpRequest获得的得到的responseXML 对象自动封装成MSXML对象,因此有一些特别的方法,但是在IE10中,所有的XML一律采用的是标准的对象,很多特有的方法也就不再被支持,比如说selecNodes(),selectSingleNode

解决方案:

l 可以转变为msxml对象,使用try catch 避免在其他浏览器造成错误

var xhr = new XMLHttpRequest();

xhr.open(method, url, true);

try { xhr.responseType = 'msxml-document'; } catch(e){}

//...

var doc = xhr.responseXML;

// 'doc' now contains an MSXML document in IE10’s Standards and Quirks document modes

l 彻底的解决方案就是使用标准的,可以用getElementsByTagName方法来代替

2.  UserAgent改变带来的影响

IE10自然会更新下UserAgent信息,新的信息为:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

由于MSIE后的版本号从一位数变成了两位数,所以如果是使用字符串检测的话需要注意避免犯下面这个错误

// INCORRECT: will report IE10 version in capture 1 as "1"

var matchIE = /MSIEs(d)/;

改成下面这种就OK了

// CORRECT: will report IE10 version as "10"

var matchIE = /MSIEs([d]+)/;

当然最靠谱的还是使用功能检测,而不是浏览器检测

2. 移除了对条件注释的支持

条件注释对于解决IE家族的兼容性问题一直相当有用,但是IE10却果断抛弃了对条件注释的支持(可能是觉得受到了歧视)。不过还好IE对标准的支持已经很好了,可能也不太需要条件注释了。

如果想在10中继续使用条件注释,可以强制使用IE9的行为来修复,加入下面这个meta标签

4.Flash的不完整支持

IE10刚开始的版本并没有加入对flash的支持,因为它推荐使用html5而不是flash,但是应大家强烈的要求还是加入了flash,要提示用户使用flash,可以加入以下信息

但是对flash的支持有诸多的限制,对有些flash功能不兼容

以下的 Flash 功能开始与 Internet Explorer 10 并不兼容,可能无法在支持 Flash 的网站上提供有效的综合体验:

照相机

麦克风

打印

特色书签(例如,Flash 定位点)

依赖双击(播放器使用双击来缩放到合适大小,但不会将双击作为双击事件传播到  Flash 内容)

使用滚动更新事件和滚动事件

依赖 P2P(适用于 Windows 应用商店应用的 Windows UX 指南不允许创建套接字服 务器)

依赖以下 Flash 触控 API:平移、缩放、旋转、轻扫以及按下并点击

附:另外IE9也改变了蛮多东西,摘录一些常会遇到的点以及常规解决办法,供大家参考

1. 在使用createElement时候不再识别(),比如

var elm = document.createElement("

");//会报错

2. 为了和其他浏览器兼容,不再支持方法的指针缓存

var d = document.writeln;

d("

d.call(document, "

3.获取自定义属性时候不能使用 . 运算符,而应使用getAttribute()方法,否则获取失败

5. 间接引用eval方法会报错,比如

var indirectEval = eval;

indirectEval("myDate = new " + dateFn + ";");//所以直接使用就得了

6. Object中如果包含有类似emebed的回退内容,在IE9中会被识别到DOM中,当使用window[“name”]获取时候,会同时得到emebed,虽然你只想获得object,

解决:使用功能检测,若是支持document[“name”],则使用,否则就用window[“name”]

7. 文档中的空白被可以被识别为DOM中的元素

最后

以上就是动听小懒猪为你收集整理的eval语法报错 ie10_IE10的那些坑的全部内容,希望文章能够帮你解决eval语法报错 ie10_IE10的那些坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部