对于一个IE8兼容性问题的反思

最近做了一个需求,功能很简单,把用户的优惠券数量读取出来,然后显示到“用户中心”上。开发完成后,别的浏览器正常,但是到IE8上就不行了。而且,按下F12之后,就又可以加载出来了。

首先,找了前端人员,看了看,没有找到原因,她怀疑是脚本冲突,不过忙了半天,还是没有搞定。

其次,换浏览器,来回折腾。

最后,思考了一下,在加这个功能之前,数据也是那样子读取的,用ajax请求后台数据,然后写入到页面的指定标签中,那么为何自己加了一个类似的数据 就不行了呢? 于是,alert了前后的参数。最后发现,在迭代的那一步,alert失效了。但是在console.log()代码之前,是可以的,会不会是这个函数的影响呢?果不其然,去掉console.log()之后,恢复了正常!

代码如下:

			$(document).ready(function(){
				$.ajax({ url: "/ucenter/getAccountByUserId.action", type: "POST",
					success : function(data) {
						var json = eval('(' + data + ')');
						 $.each(json, function (key, value) {
							if(data != "" && data != null){
								$("#em_account").html("¥" + (value.account).toFixed(2));
								$("#em_backCount").html("¥" + (value.backCount).toFixed(2));
								$("#em_freezeBackCount").html("¥" + (value.freezeBackCount).toFixed(2));
								$("#em_freezeAccount").html("¥" + (value.freezeAccount).toFixed(2));
								// 设置优惠券数量
								var couponStr = "";
								// IE8 不支持! console.log("[debug]couponCount : " + value.couponCount);
								if(value.couponCount > 0){
									couponStr = "<a href='/ucenter/queryCoupon.action' style='color:#DD4F11'>"+value.couponCount+"</a>";
								}else{
									couponStr = value.couponCount;
								}
								$("#em_couponCount").html(couponStr);
							}
						 });
					}
				});
			});

感悟:碰到异常,要理清思路之后,再去采取行动。既然以前的几个数据,都是用同样的方式读取的,那为何自己加了一个就不行了呢?除了加了类似的代码,还加了什么代码呢? 不就是console.log()吗?很好定位的一个思维方式,却折腾了那么久,太不应该了。

注:IE8/IE9要先按F12开启IE Dev Tools才能存取console物件。

如果使用环境包含IE8/9,请养成良好习惯,用if (window.console) { ... }包住console.log()动作,切忌把IE8/9想成Chrome/Firefox,以为永远有window.console可用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-19 06:35:37

对于一个IE8兼容性问题的反思的相关文章

【Javascript】 IE8兼容性问题汇总

本章是在网页开发过程中所碰到的IE8兼容性问题做一个汇总. 尼玛太坑了,屡次踩坑,总是没记性.而且更坑的是IE8的开发者工具太难用了,想调试都调试不出来. 不得已只好记录下来,下次出问题了好方便排查. JS脚本中,必须遵循以下规则,否则都将导致JS脚本在IE8 错误. 1.所有js脚本的语句结束之后,必须以分号结束. 2.数组(Array)对象声明或赋值时,注意不能有多余的逗号(,)如: var arrNum = [1,2,4,]; var arrStr = [ {key:1}, {key:2}

bootstrap IE8 兼容性处理

1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="wi

ie8下面margin:0 auto;不能居中的解决方案,ie8兼容性代码

今天写了个div,用margin:0 auto:来定义他的属性,让他居中,结果,竟然无效. 一开始以为是css里的代码冲突了,检查了好几遍,没问题,然后用火狐和谷歌浏览器测试,居中了... 看来是浏览器兼容性的问题,突然想起现在用了win7,ie已经升级到了ie8,看来问题就处在ie8的兼容性上.百度之.... 特将解决方法复制到下面: IE6,7,Firefox下实现居中一般用:margin: auto 来实现,但在IE8下,这是不够的.现提供两种解决的办法: 方法一(推荐): 首先页首必须设

IE8兼容性问题的解决方案

前几天,面试到Ie8的一些兼容问题,傻眼了,回想自己做了将近2年的移动端项目,ie兼容似乎没怎么做过.所以私下便开始找找ie兼容的视频或者文章学习,唉,还是不买书了,家里那么多书,都没看过呢,好了,开始发一波福利: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px "Helvetica Neue" } span.s1 { } 一.HTML5标签兼容方案:html5shiv.js p.p1 { margin: 0.0px 0.0px

ie8兼容性_1:document.onclick失效

问题描述:在某些情况下,document.onclick在ie8浏览器下会不起作用. 问题原因:与某些第三方插件有关. 解决方案:把添加到document上的点击事件改为添加到body上的点击事件即可解决. eg:document.onclick=fun:改为document.body.onclick=fun: note:不建议使用禁用第三方插件的方式解决该类问题,因为我们的客户很多时候是不了解插件这方便的知识.

一个技术派创业者的反思

虽然今天的我已经成为一个胆大心细脸皮厚[相比从前的我]的IT男.但从未否认我的程序猿经历,甚至偶尔感到手痒也会去写写代码,那种敲击键盘一行行优美的代码随风飘扬的场景妙不可言,有如找到初恋的感觉.我从大学本科開始干程序活至今已有21年.具有强大的坚不可摧的老黄牛精神.虽然现在活得马马虎虎.可我依旧感恩全部的一切,无怨无悔.无论社会是怎样的乱七八糟,我仍然相信知识改变命运.努力保持那颗最初纯真的心,不求出于淤泥而不染,但求做到过得了自己的坎. 我是一个纯粹的技术创业者,因此一路艰辛一路坎坷一路成长,

ueditor ie8兼容性问题

ie8情况下,在进入加载有uEditor编辑器页面时候,不显示工具栏,会提示ueditor 缺少对象或者出现错误 1.引用Ueditor的js 的时候用 绝对路径 网上搜出来的一种解决方法 不过我通过该方法没有解决 而且放到服务器上,不好使用绝对路径 2.经过测试 ueditor 1.4.3.2 在ie8下不会报错, 在官网上下载1.4.3.2 将引入的config.all.js或者config.all.min.js 直接替换 3.360.uc等浏览器双核浏览器的兼容模式下 会出现默认ie8 如

IE8 兼容性总结

rgba 颜色格式 IE8 不支持 rgba(0, 0, 0, .5) 这种颜色格式. 解决方案:可以利用一张半透明的 png 图片来兼容 IE8. flexbox 根据 caniuse 给出的数据,IE8 是不支持 flex 布局属性的, 甚至 IE11 只支持一部分. 解决方案:利用 display: inline-block / display: table / display: inline 来实现部分兼容. Almost complete guide to flexbox (witho

解决Easyui1.3.3 IE8兼容性问题

事先声明:项目在Firefox和Chrome上完美运行,在MSIE9.MSIE10上基本没问题,但是放在MSIE8上面运行问题就出来了.登录系统后,系统页面跳动,导致系统无法使用:我使用的是Easyui1.3.3.经过网上查找N久,最终解决MSIE8的兼容性问题(客户是国企,他们都是使用的MSIE8没办法必须解决问题). Jquery EasyUI 怎么使用这里就不做介绍了,官网地址:http://www.jeasyui.com/. 1.常见错误提示如下 详细内容如下: 用户代理: Mozill