Posted in javascript @ 2012.04.11 (周三) 2:23 下午 by 一兮
复制数据很简单。
var a = jsonobj;
简单的就将jsonobj的值复制到了变量a中,但如果jsonobj是个json数据的话,你会发现修改a的值时,jsonobj也会跟着改变。
如果你对javascript中的prototype那套机制比较了解的话可能就会大概明白是怎么回事,是的,因为json其实也是个object,所以var a = jsonobj 赋值时,中间有个原型链会将两个关联起来。
要达到想要的复制数据也很简单:
var a = JSON.parse(JSON.stringify(jsonobj));
将json序列化为string再还原成json,因为中间产生了新的对象,所以两者不再关联。
这种写法看起来很不科学,但应该是比较好的办法了。
Tags:JSON 167 views With
Posted in javascript, win8, 工作记录 @ 2012.01.10 (周二) 12:16 上午 by 一兮
随着US时间1月8号M$第一波参赛程序的提交截止,Quick Note for Win8的开发也算是告一段落,中间因为一些各种准备不充分问题,虽然这次提交的版本还没达到最完美的我想要的最完美的状态,但总算顺利的完成任务。
这之间有很多波折,从最早的win8 developer preview发布时,我曾第一时间在我的笔记本上直接硬盘安装win8,大概的了解了metro界面和以前传统desktop的区别,并简单的从visual studio 11 preview中创建了一个split的javascript metro项目,build,整个过程很顺利,简单的浏览了项目文件的组成,当时评估是基于web的APP很好移植,甚至你可以简单的理解成使用javascript build的metro程序其实就是封装了一个全屏的IE10而已(现在开来,这句话理解也确实没有错)。
凭着这个了解,粗略的评估了quick note应该是比较容易移植到win8 metro下,而因为preview中的win8 app store并没有开放,当时得到的消息是今年的2月份开放,所以这事情搁置了一旁,然后投入到另一个项目的开发中。
然后上个月下旬的时候得到一个消息说,M$在5个国家地区(不包括CN)有个第一波提交metro app的评选,将会出现在win8 beta版本的store中预置,这是个绝好的先机,所以迅速将重心转移到这边。
首先要思考的第一个问题是quick note数据的存放问题,因为考虑之前偶尔会有用户抱quick note chrome版本数据丢失的问题,所以这次想找个比较稳妥的数据储存模式,在了解懂啊winRT并没有提供SQL的数据库支持,并在一些第三方的选择比如winrtsql等,最后还是选择了使用html5中的indexdb,第一,这是metro中唯一有文档的数据库级别的储存,第二,之前在firefox中的quick note也是使用indexdb储存,移植应该会很顺利。
然后是文件的迁移,并解决一些列bug,以及一些IE10的兼容问题,以及一些metro app的一些特殊兼容问题,比如不允许直接使用innerHTML之类的方法(当然也包括jquery的.html()方法),debug,竟然出奇的顺利,两天时间就能把chrome的quick note移植到win8中,并还有和diigo的云同步功能。
事情转变在某天晚上看了win8 build大会的视频后,重新认识了metro UI的设计。
因比赛的评分使用metro UI的分值比重是50%,看了视频后,直接推翻直接准备在基于split view的模板上重新设计quick note。
和UI nancy简单的讨论后,然后开始迅速的搭建HTML结构原型。
并尽量的去使用metro winJS中提供的UI,比如app bar ,setting ,listview之类的东西。
后来又添加上了系统层的share,search之类的东西。
因为时间问题,中间取舍了很多,最后提交的版本中,里面有个indexdb的小bug也未来得及解决,只是用了一些hack的办法去处理(关于什么bug,和firefox中indexdb的区别,我后面会专门开文章介绍)。
虽然赶在了截止之前提交了程序,但是是否能入围,只能祈祷。我自己做出来的东西,我只能打70分,如果给我更充裕的时间,我能研究透win8的API,应该能把quick note做的更完善。
祈祷能入围吧。

Tags:CSS javascript metro win8 424 views With
Posted in javascript @ 2011.10.27 (周四) 5:19 下午 by 一兮
在javascript中,二进制流一般是一个[object ArrayBuffer]的对象,一般的javascript方法是没法处理这个object的。
要处理它,我们需要用Uint8Array将它转换成一个8位的整形数组。
当然,如果你需要,你还能将它还原成string
1
2
3
4
5
6
7
8
| // t is a arraybuffer
var uInt8Array = new Uint8Array(t);
//转换为二进制数组 例如 var byte3 = uInt8Array[4]
for(i=0;i<uInt8Array.length;i++){
d+=String.fromCharCode(uInt8Array[i])
} |
Tags:HTML5 二进制 616 views With
Posted in DIV+CSS Design @ 2011.10.14 (周五) 9:04 上午 by 一兮
来自其他网站的,这个比较全:
http://css.doyoe.com/
Tags:css3 525 views With
Posted in javascript @ 2011.10.11 (周二) 5:06 下午 by 一兮
在写JS时,很多情况我们需要知道浏览器的版本来做一些工作。
javascript获取浏览器版本方法:
1
2
3
4
5
6
7
8
| //获取浏览器名
navigator.appName // Microsoft Internet Explorer / Netscape 等等
//针对IE 获取详细浏览器版本
navigator.appVersion.split(";")[1] // MSIE 8.0 / 7.0 /6.0
//其他获得浏览器详细版本
navigator.appVersion |
在chrome/firefox中,navigator 这个全局对象还提供了更多的关于客户端的信息,有兴趣可以console一下或者each一下。
Tags:chrome firefox IE 565 views With