2010年04月20日 – 22:30
By FoxLing Posted in JS/AJAX/DOM
通过 jQuery 获取 background-position 的值时,在 IE 中返回 undefined
通过测试,发现无论是写在样式表中,还是写在元素style属性里,在 IE ( 6, 7, 8 ) 里获取background-position的值时,均返回undefined。
针对IE的这个bug,写了如下方法获取background-position的值:
请忽略getCSS方法,这是一个简易的获取css的方法,并不完善,了解不同浏览器获取CSS的方法
var getCSS = function(){
var rdashAlpha = /-([a-z])/ig,
fcamelCase = function( all, letter ) {
return letter.toUpperCase();
};
return function(el, name){
if (typeof el === 'string') el = document.getElementById(el);
var cssValue,
camelCase = name.replace(rdashAlpha, fcamelCase);
if (el.currentStyle){
cssValue = el.currentStyle[camelCase];
}else if(window.getComputedStyle){
cssValue = window.getComputedStyle(el,null)[camelCase];
}
return cssValue;
};
}();
var getBackgroundPosition = function (){
var s = getCSS(document.body, 'background-position') === undefined;
return function(el){
if (s){
return getCSS(el, 'background-positionX') + ' ' + getCSS(el, 'background-positionY');
}else{
return getCSS(el, 'background-position');
}
};
}();
猛击DEMO可以看到效果
2010年04月18日 – 15:50
By FoxLing Posted in JS/AJAX/DOM
遇到一道题目:
var a = Math.PI++, b = ++Math.PI;
alert(a);
alert(b);
alert(Math.PI);
不加思索的写下:
3.14
4.14
3.14
后来经常提醒才想到Math.PI是常量,修改一个常量的值,会抛出错误。
而上面的操作中,b = ++Math.PI 可以理解为将Math.PI递增加1,并且赋值给变量 b;
这时候开始迟疑了:
在javascript中,给常量赋值是否会抛出错误呢?
阅读全文 »
2010年04月14日 – 23:23
By FoxLing Posted in JS/AJAX/DOM
浏览器存储方式主要下面几种:
- Cookie
4096字节;缺点:存储量小,请求头附带cookie带来性能问题。
- Flash Share Object
默认支持100k,跨浏览器存储最好的方式,毕竟现在没有安装flash插件的用户是很少的;缺点:需要加载一个swf文件,个别用户不支持flash。
有一个基于jQuery的插件叫 jStore ,就是通过Flash Share Object实现的。
- IE的 UserData
最少也能支持640k,IE8后已经支持DOM Storage;缺点:IE only。
- DOM Storage
默认支持5M存储量;缺点:IE7,IE6不支持。
- Google Gears
功能最强;缺点:但需要安装软件,而且,安装的用户是较少的。
这里主要学习 IE 的 UserData 和 DOM Storage
阅读全文 »
2010年04月11日 – 22:00
By FoxLing Posted in JS/AJAX/DOM
array.push优化
- 原生的方法arr.push()
- 通过arr[arr.length]直接赋值
- 把方法二写成一个函数方便调用
测试结果请猛击这里:
/examples/2010/03/array-performance/push.html
测试结果:
- 给arr[arr.length]直接赋值比push方法快
- 函数调用增加了开销,特别是在IE6和opera下表现明显
- Chrome应该是做了优化,相差不大
待续(也许) =,=…….
2010年04月7日 – 23:36
By FoxLing Posted in 杂七杂八, 用户体验
在京东给老爸买了一套罗技的键鼠套装。
第二天登录网站查询看到的货运状态是:
送货方式:EMS
承 运 人:京东
货运单号:2249457148 点击查询
承运人电话:020-28809135
“点击查询”的链接是http://www.ems.com.cn/
事实上,这个单号在ems网站是查询不了的,ems页面提示,单号是13位。
于是想到,京东应该是有很多家快递商合作的,但这里的状态显示却相当地不人性化。
应该针对不同的单号,显示各家快递的网站以及查询网址的链接,如果可以的话,直接从对方网站读取状态信息。(淘宝就做得不错)
之后,到了京东的投诉中心提了一条关于这个货运状态的建议,
客服回复: 您好,因快递输入回执较慢,还请您稍后查询,为您带来的不便还请您见谅!
这客服回答也太敷衍了事..对京东的印象减分了~
对于网上购物来说,物流状态应该是相当基础的一项服务,从技术角度来说,也是不难实现的。
小细节,好体验。
阅读全文 »