RTE

Posted on 24th May 2007 by Nio in JavaScript, Mac, 程序人生

Rich Text Editor (RTE) 是跨浏览器的所见即所得编辑器,特性就不多说了,比较特别有两点:
1、支持 Safari,目前包括 FCKeditor 等都不支持 Safari;
2、轻量级。

不过这个脚本给出的下载包是压缩之后 js 文件,源代码需要购买。因为需要做一些修改,所以源代码是必不可少的。其实对于 JavaScript 的加密、压缩,基本都是可以还原的,虽然有些变量被替换得可读性极差,但方法名、函数名是不可能变的。

下面简单说一下我的解压过程,先看看压缩文件:richtext_compressed.js。这个文件只有一行:


eval(function(p,a,c,k,e,d){ .... )

很明显,所有的有效代码都在 eval() 函数中执行,这个函数里边的一堆代码实际上运行之后的结果是一个字符串,这个字符串就是之前的源代码(可能是压缩之后的),那么我们的目标就是获取到这个字符串。很简单,把 eval() 去掉,在前边加上 var a = …. 这样 eval() 里边的执行结果就给了变量 a,这个变量就是源代码字符串,接下来你可以直接使用 document.write(a); 把 a 打印出来,也可以将 a 赋给一个 textarea 框,我习惯用后边这个方法,因为可以直接拷贝,也不需要处理特殊符号、HTML 标签。

获取到这个代码之后可以发现,其实这已经是完整的源代码了,只不过做了简单的压缩,网上有很多这一类的解压工具,比如 JsDecoder,将获取到的源代码用这类工具解压之后,可读性就出来了。

这里上传了我解压之后的最终版本,richtext.js。(作者挣不到钱不要骂我,呵呵)

使用 CSS+JavaScript 实现超酷菜单

Posted on 21st March 2007 by Nio in JavaScript, 程序人生

devthought 提供的 Fancy Menu 看着真的很不错,像使用 Flash 实现的效果。

JavaScript 中的有限状态机

Posted on 31st January 2007 by Nio in AJAX, JavaScript, 程序人生

看到这篇来自 IBM 的文章标题中出现“有限状态机”,顿时觉得非常亲切,大学的时候有门课叫《编译原理》,其中就讲到有限状态机,基本都忘的差不多了,呵呵。
JavaScript 中的有限状态机,第 1 部分: 设计一个小部件

有限状态机很早就已用作设计和实现事件驱动的程序(比如网络适配器和编译器)内复杂行为的组织原则。现在,可编程的 Web 浏览器为新一代的应用程序开辟了一种全新的事件驱动环境。基于浏览器的应用程序因 Ajax 而广为流行,而同时也变得更为复杂。程序设计人员和实现人员能够大大受益于有限状态机的原理和结构。本篇文章将向您介绍如何使用有限状态机来为一个简单的 Web 小部件 —— 一个能够淡入和淡出的工具提示 —— 设计复杂的行为。

本系列的第 2 部分将描述如何在 JavaScript 内实现此设计,以及如何充分利用 JavaScript 独特的语言特性,比如关联数组和函数闭包。第 3 部分则会涵盖如何使此实现能够在所有流行的 Web 浏览器中正常工作的内容。最终的代码紧凑简练,逻辑清晰透明,动画效果即使在负载极重的处理器上也能平稳流畅。

Synchronizing a Web Client Database: LocalCalendar and Google Calendar

Posted on 23rd January 2007 by Nio in AJAX, Java, JavaScript, 程序人生

Synchronizing a Web Client Database: LocalCalendar and Google Calendar

Rich Internet Applications (RIAs) are becoming more and more popular as the capabilities available to internet clients increase. There is a growing demand for RIAs to be able to store rich, structured, searchable data on the same machine as the web browser, and to be able to synchronize this data with a centralized data store running behind the web server.

各种 lightbox 实现

Posted on 16th January 2007 by Nio in JavaScript, 程序人生

Thickbox - 基于 jQuery,支持 AJAX,轻量级的而且比较高效。可以在 lightbox 中使用图片或 HTML。大小约为 40k,目前还可作为 WordPress 的插件使用。

GreyBox - 创建 iframe 的弹出界面,可使用图片、HTML 及 URL,大小约为 20k。

GreyBox Redux - 基于 jQuery,比 GreyBox 更轻。

Lightbox v2.0 - 最初是为了显示图片设计的,使用了 prototype 和 sciptaculous,所以有些沉重,但对于图片来说很好用。

Lightbox with moo.fx - 基于 prototype,但只能用于图片。

Lightbox Gone Wild
- modal 模式窗口的 lightbox,可使用 html、表单及图片,也是基于 prototype 的,所以有一些 heavy。

Multi-faceted LIghtbox - 又一个基于 prototype 的,不过这个为各种可用于 lightbox 的数据类型提供了选项。

Leightbox - 和 Lightbox Gone Wild 很相似,只是 Leightbox 以 html 方式存放内容,所以可以被搜索引擎索引到。

xilinus - 使用简单,基于 prototype,很容易定制,可使用多种内容选项。

Lightbox Plus - 可以自动根据窗口的大小缩放图片。

Suckerfish Hover Lighbox - 和传统的 lightbox 不一样,它在打开 lightbox 的时候,还可以点击访问页面上的其它元素。

Litebox - 这是 Lightbox 的另一个版本,代码量减少了,使用了 moo.fx 和 prototype-lite,如果页面需要减肥的话,可以选择这个。

LITBox - 使用类写的 lightbox,所以可以创建多个对象实例,并且单独进行控制。基于 Thickbox。