IE兼容性开发的笔记
当前项目组开发的产品对外承诺支持IE9和IE11,但在推广应用过程中发现存在相当比例的用户实际上还在使用IE8。而这相当比例中的用户还包含了大部分的公司领导。为了满足公司内部各阶层人士体验我们产品的诉求,开发团队的上层领导经过协商,决定投入专门的精力来完毕IE8的支持。本文是笔记,记录了整改过程中发现、解决的一些问题。
IE兼容模式
简单的说,即是在jsp页面的头部添加例如以下的代码,指定浏览器以最高模式来呈现页面。对于我们项目组的产品来说。例如以下的代码能够保证IE8、IE9、IE11的用户在打开页面时,都能够得到最佳的体验。
<meta http-equiv="X-UA-Compatible" content="IE=edge">
至于这行代码的详细含义,能够问度娘。相信会有惬意的答复。
假设没有这行代码。当前项目开发的jsp页面在IE8模式下打开时,会报一些稀奇古怪的、和jquery、JSON相关的错误,加上这行代码之后,这些错误就消失了。
字符串的trim方法
项目组内开发者在页面上大量应用到了字符串的trim方法,IE9及其以上版本号的IE浏览器都默认提供了trim方法,但IE8并没有提供,因此页面上使用trim方法的地方都会报js错。
解决方法比較简单,直接使用jquery提供的trim方法,比方"axdfa ".trim()替换为$.trim("axdfa "),问题就可以解决。
变量定义
页面上有一个div,id为xxxx,代码样比例如以下。
<div id="xxxxx"></div>
此时js代码中如出现例如以下的代码。而且xxxxx没有使用var来声明,那么js在运行到例如以下一行时会报错,提示信息是对象不支持此属性或方法。
xxxxx = 1;
这个问题初始发现时让我纠结了相当长时间。分析思路一度跑偏。以为是IE8的js引擎对于语法要求比較高,而IE9和IE11的语法要求比較低;但奇怪的是。网上并没有搜索到相关的话题,所以并不确定。后来经高手启示,并重复尝试之后。才发现当页面上存在前述场景时,IE8模式下js代码是一定会报错的。
明白了问题之后,改动方法就很明白了,要么改动div的id,要么使用变量前用var来显式初始化。
数组的遍历
对于数组var a = [1,2,4,],在IE8下。使用下标方式和jquery的each方法遍历数组时。会多遍历得到一个null对象;而使用IE9、IE11则不会存在这个问题。因此数组的最后一个元素之后切记不可添加“,”,否则会导致页面的js在IE8时出现诡异的表现。
数组的indexOf方法
IE8不支持数组的indexOf方法,为了满足在数组中查找对象的须要,代码中一般会为数组扩展indexOf方法。这引入一个问题,在使用foreach方式遍历数组时,indexOf方法也会作为数组的一个成员被遍历到,这比較讨厌;而使用下标方式和jquery的each方法来遍历数组。则不会引入这个问题。
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function () {
// ...
}
}
因此我个人建议是不要为数组提供indexOf方法的实现。直接使用jquery的inArray方法,也能够达到同样的效果。但须要注意的是inArray方法在使用时。被查询对象在前,数组对象在后。
欢迎訪问Jackie的家,http://jackieathome.sinaapp.com/,如需转载文章,请注明出处。
IE兼容性开发的笔记的更多相关文章
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...
- 驱动开发学习笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇
驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentatio ...
- 驱动开发学习笔记. 0.02 基于EASYARM-IMX283 烧写uboot和linux系统
驱动开发读书笔记. 0.02 基于EASYARM-IMX283 怎么烧写自己裁剪的linux内核?(非所有arm9通用) 手上有一块tq2440,但是不知道什么原因,没有办法烧boot进norflas ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
随机推荐
- fuser ---显示出当前程序使用磁盘上的某个文件
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser只把PID输出到标准输出,其他的都输出到标准错误输出. a 显示所有命令行中指定的 ...
- 紫书 例题 10-29 UVa 1642(最优连续子序列)
这类求最优连续子序列的题一般是枚举右端点,然后根据题目要求更新左端点, 一般是nlogn,右端点枚举是n,左端点是logn 难点在于如何更新左端点 用一些例子试一下可以发现 每次加进一个新元素的时候 ...
- P2420 让我们异或吧(树链剖分)
题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...
- Flexible implementation of a system management mode (SMM) in a processor
A system management mode (SMM) of operating a processor includes only a basic set of hardwired hooks ...
- 最全面的AndroidStudio配置指南总结-包括护眼模式
使用AndroidStudio开发APP已有半年多的时间了,从刚开始的不习惯到慢慢适应再到逐渐喜欢上AndroidStudio,中间的过程颇有一番曲折,现在把自己对AndroidStudio的配置心得 ...
- 零基础学python-3.3 标识符
1.标识符的组成 1)有数字.下划线.英文字母组成 2)第一个字符仅仅能是字母或者下划线 3)大写和小写敏感 标识符通常是变量名称.方法名.类名等 2.keyword python里面有一系列的关键字 ...
- JSR 303 - Bean Validation 简单介绍及用法
一.JSR-303简单介绍 JSR-303 是 JAVA EE 6 中的一项子规范.叫做 Bean Validation,官方參考实现是Hibernate Validator. 此实现与 Hibern ...
- Android Design Support Library初探,NavigationView实践
前言 在前几天的IO大会上,Google带来了Android M,同时还有Android支持库的新一轮更新,其中更是增加一个全新的支持库Android Design Support Library,包 ...
- 25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
转自:https://blog.csdn.net/wangyj1992/article/details/78387728 因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我 ...
- Windows Server8下补丁分发配置与iSCSI配置
1.Win Server 8 下配置补丁分发(高清视频下载:http://down.51cto.com/data/424305)本视频适合于Windows Server系统管理员学习 650) thi ...