Archive for July, 2007

将文章同步到Live Space中去
Tuesday, July 31st, 2007

MSN上的朋友们,现在你们可以及时看到我的Blog更新了 :)

许多人还是不大喜欢用RSS订阅,而Live Space的更新会及时地在MSN联系人前面显示一个小星星。

我用了Live Space Sync这个插件来把我的Live Space与这个blog同步。至少从已经转过去的文章看,效果是很不错的。

不过那边基本就是一个通知,我只管把文章推过去,评论还是来这边好了,呵呵。那边的评论我关闭了。

可能还有很多朋友、同学不知道我在写blog吧,哈哈,欢迎大家以后多来看看 :) 从生活到技术,什么都乱扯。从体系结构到编译器到高级语言到Web前端,知道什么写什么。

script.aculo.us实现Gmail联系人自动补全
Monday, July 30th, 2007

摘自script.aculo.us首页:

script.aculo.us provides you with easy-to-use, cross-browser user interface JavaScript libraries to make your web sites and web applications fly.

What’s inside? animation framework, drag and drop, Ajax controls DOM utilities, and unit testing.

It’s an add-on to the fantastic Prototype framework.

用script.aculo.us有一段时间了,它实现的效果很美观实用,用起来又非常简单,非常舒服。最初的时候我为一个drag drop的任务头疼,后来发现了它,一句代码搞定,真是太爽了。

如果让你现在做一个像Gmail写邮件时自动补全地址的功能,一定会觉得无从下手。是啊,动态创建提示列表,方向键处理,回车,Tab,还不知道在各种浏览器中调试多少次才可以,好麻烦!

别急,有script.aculo.us,这个工作简单了很多。我们用Autocompleter.Local来实现这个效果。先给个效果看看:




我不想为它专门改一下blog模板加个CSS,所以候选项的样式不是很好,分不清哪个被选中了。你可以在上面输入字幕”b”,然后用鼠标点击一个选项。实际使用的时候一定是需要样式的,这样方便用上下方向键选择(现在也可以按上下键然后回车,只是没有表现)。javascipt我也是引用的script.aculo.us的,如果是自己用,可以下载一份到自己的服务器上。

代码我就不再写一遍了,你可以自己查看本页面的源代码。关键就是一句代码:

new Autocompleter.Local(”autocompleter”, “popup-options”, ["aaa", "abc", "bbb", "bbc", "bcd", "cdd"],
{frequency: 0.1, tokens: “,”, afterUpdateElement: function(element) {element.value+=”, “;}}
);

第一个参数是那个input的id,第二个参数是显示後选项的元素的id,第三个参数是候选项数组。第四个参数是选项。tokens指定分隔符,我这里指定了逗号,那么它就会对最后一个逗号后面的内容进行补全操作。afterUpdateElement我定义了一个函数,在输入框中加上一个”, “,这样就可以输入多个项了。

和Gmail的差距?你可以把input换成textarea,加上CSS试一下。我觉得不比Gmail差。

除了可以根据参数中的数组进行补全,script.aculo.us还提供了更多的功能,如通过Ajax请求从服务器取得补全列表。

script.aculo.us的文档其实还不是特别完善。如果你有这样的需求,建议你阅读这几个页面:

其中Ajax.Autocompleter的介绍最为详尽,其中的许多选项是Autocompleter.Local也接受的。有必要的时候可以看script.aculo.us的源代码,它是最权威的文档。

form的onsubmit属性
Monday, July 30th, 2007

在对一个表单(form)进行客户端检验的时候,我们已经习惯了<form onsubmit=”return check()”>这样的形式,如果表单没有通过验证,在check函数中return false就会阻止表单的提交了。

然而,如果要动态地为一个表单添加验证,即HTML代码中没有写onsubmit,而在页面加载后用javascript给这个form加一个handler,问题就来了。

假设我们已经得到了表单的DOM节点,保存在变量form中,一般这样来给它加上handler:

if (form.addEventListener) {
form.addEventListener(”submit”, check, false);
} else if (form.attachEvent) {
form.attachEvent(”onsubmit”, check);

但是这个check函数现在应该怎么写呢?验证失败时,仅仅写一个”return false;”在Firefox中是不能阻止表单的提交的(在IE中可以),这就是为什么大家在onsubmit属性中要写”return check()”,而不仅仅是”check()”。

请看ECMAScript Language Binding,其中明确地写着,event listener没有返回值。其实一切的根本都因为IE不支持DOM Level 2,大家都习惯了IE的return false,到了Firefox中也只是一个ugly的变通,而很少去注意正确的做法。

下面是一个可以被动态地attach(见上面的代码)的check函数:

function check() {
if (e && e.preventDefault) e.preventDefault();
return false;
}

在IE和Firefox中,它都可以被动态挂载为onsubmit的handler而且正常工作。

万恶的IE!

在Flash中如何弹出链接
Saturday, July 28th, 2007

在AS2中,一般用getURL函数来打开链接:

getURL(”http://www.qingbo.org/”, “_blank”);

在AS3中,用navigateToURL函数:

navigateToURL(new URLRequest(”http://www.qingbo.org/”), “_blank”);

但它们都回被Firefox的ad blocker阻止并出现一个警告条(甚至是一个随机事件!)。我Google了好久,大部分都没有给出好的办法。

其实Google的第二条结果是blogspot的,因它被封我就懒得打开了。最后不得已用代理上去,发现解决办法就在那里,用ExternalInterface调用Javascript打开新窗口就可以了。简单的就是:

ExternalInterface.call(“window.open”, “http://www.qingbo.org/”, “_blank”, “”);

原文链接(链接加了代理,直接点击可访问):

http://skovalyov.blogspot.com/2007/01/how-to-prevent-pop-up-blocking-in.html

Pownce不好玩
Saturday, July 28th, 2007

PownceDigg的创始人的又一个产品。

首先不支持中文,现在做宽字符的支持不很简单吗?它页面编码是UTF-8的,肯定是数据库或者后台没有处理好。

客户端软件,可以发消息,可以发链接,加Event,但上传不了文件。选择文件后什么反应都没有,点“post”就提示我没有选择文件。也许是我的人品问题。

在客户端软件想Reply,又跑到网页上去了,不爽。为了流量?这不客户端上也有广告么。。

AIR是刚出的技术,Pownce的软件还是Alpha 2,也许以后会有惊喜吧,呵呵,我现在是对它没什么兴趣。不明白为什么造了这么大的势,病毒营销这么成功,可能跟digg有关系吧!

有6个邀请,想试试的说话:)

Nokia删除SIM卡通讯录需要保密码
Friday, July 27th, 2007

前几天试用一个新手机,把通讯录复制到了SIM卡上。换回原手机后,通讯录里全是重复的联系人,因为手机上也有个备份。但选择全部删除SIM卡上的联系人时,却提示输入保密码。

我上网找啊找啊,找到一个试一个,1234, 123456, 0000, 手机号后四位,都不行。后来搜到一个比较像的,说是Nokia的保密码是12345,跟SIM卡没关系。但我输入后还是不对!再搜,有人说连续输入5次错误后,会有一段时间连正确密码都不接受。嗯,等它休息了一会,我再试,终于成功了。

Google 拼音导致程序崩溃
Friday, July 27th, 2007

Google拼音导致程序崩溃的事情听说好多了,不过今天是自己亲身遇到了。

昨天还是今天我看见输入法自动更新到了1.0.20.0,Google输入法的版本历史里还写着“修正了在部分游戏和应用程序中的兼容性问题”。

可是在Flash CS3中切换到Google拼音,一打字就挂了。

难道找一个编辑器写好再往里复制?麻烦不说,总有忘记的时候,一切换输入法,按个键就挂,说不定有重要的工作就丢失了。

绝对不可用。

推荐一些wallpaper和一个网站
Thursday, July 26th, 2007

经常换一下桌面壁纸,可以使自己的电脑保持一定的新鲜感:) 有些壁纸很鲜艳很花哨,初看很喜欢,不过你很快就会疲劳甚至厌倦。就我的感觉,还是风景类的图片做桌面最好。

这里有一系列风景桌面:

meadow-1024x768.jpgbarn-1024x768.jpgwoods-1024x768.jpg

我个人很喜欢这三张,连同其它一些放在巴巴变上。

这些图片都是从Picture Correct上下载的,推荐上去看看,每张壁纸都有各种不同分辨率的版本,没必要自己拉伸或剪切。

PS: Yupoo的图片服务器也太慢了,这个问题似乎从一开始就有,他们也不想想办法,做个好的CDN之类的?好了,我觉得巴巴变的速度稍微好点,对Yupoo说88了。图片分享网站对我来说就是个存储,哈哈,流失我这样的用户,Yupoo也没啥可惋惜的。不过对于那些重视分享的用户,速度就不重要了吗?自己都看不见自己的图片,还分享个P!不好,PS得太长了,打住。