嘀咕宣传片,感觉节奏快了点,不过挺有创意。
我在嘀咕:@Foxling,欢迎跟随交流。
Monthly Archives: 四月 2010
js在IE下获取background-position的问题
通过 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, [...]
Math.PI与++运算符
遇到一道题目:
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中,给常量赋值是否会抛出错误呢?
浏览器本地存储(1)
浏览器存储方式主要下面几种:
Cookie4096字节;缺点:存储量小,请求头附带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
Javascript Array 性能测试
array.push优化
原生的方法arr.push()
通过arr[arr.length]直接赋值
把方法二写成一个函数方便调用
测试结果请猛击这里:
/examples/2010/03/array-performance/push.html
测试结果:
给arr[arr.length]直接赋值比push方法快
函数调用增加了开销,特别是在IE6和opera下表现明显
Chrome应该是做了优化,相差不大
待续(也许) =,=…….








