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位。
于是想到,京东应该是有很多家快递商合作的,但这里的状态显示却相当地不人性化。
应该针对不同的单号,显示各家快递的网站以及查询网址的链接,如果可以的话,直接从对方网站读取状态信息。(淘宝就做得不错)
之后,到了京东的投诉中心提了一条关于这个货运状态的建议,
客服回复: 您好,因快递输入回执较慢,还请您稍后查询,为您带来的不便还请您见谅!
这客服回答也太敷衍了事..对京东的印象减分了~
对于网上购物来说,物流状态应该是相当基础的一项服务,从技术角度来说,也是不难实现的。
小细节,好体验。
阅读全文 »
2010年02月20日 – 22:41
By FoxLing Posted in 生活
小家伙14个月了还不能自己走路,得拉着一只手才行。




夕阳下山好快呀,拍第二张时就差这么多了~


阅读全文 »
2010年02月4日 – 15:06
By FoxLing Posted in JS/AJAX/DOM
需要实现:在光标位置处插入文字,以及获取焦点后光标位置处于文字末尾。
以前一直没有做过,今天了解了一下后实现并记录在此。
各浏览器TextArea获得焦点后的光标位置情况:
textarea.focus()
- FireFox: 所有文字结束处
- IE: 文字开头
- Opera: 文字开头
- Chrome: 文字开头
- Safari: 文字开头
IE支持document.selection
Firefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd属性
针对浏览器的特性进行判断并实现,代码如下:
function insertText(obj,str) {
if (document.selection) {
var sel = document.selection.createRange();
sel.text = str;
} else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
var startPos = obj.selectionStart,
endPos = obj.selectionEnd,
cursorPos = startPos,
tmpStr = obj.value;
obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
cursorPos += str.length;
obj.selectionStart = obj.selectionEnd = cursorPos;
} else {
obj.value += str;
}
}
function moveEnd(obj){
obj.focus();
var len = obj.value.length;
if (document.selection) {
var sel = obj.createTextRange();
sel.moveStart('character',len);
sel.collapse();
sel.select();
} else if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number') {
obj.selectionStart = obj.selectionEnd = len;
}
}
Demo猛击这里
关于IE TextRange 对象的方法与属性介绍:
http://msdn.microsoft.com/zh-cn/library/ms535872%28en-us,VS.85%29.aspx
TextArea对象的属性:https://developer.mozilla.org/en/DOM/TextArea