浏览模式: 标准 | 列表
JavaScript 压缩器 JSMin 是一个用于移除 JavaScript 文件中的注释和无用空白的过滤器。它可以显著将文件尺寸减半,使下载速度大大加快。 不过这个工具只提供了一个命令行版本,对于不熟悉命令行操作的人来说,这个工具不是很方便,而且如果要将多个文件压缩合并成一个时,也会很麻烦,另外,如果输入输出都是同一个文件的话,这个工具也会有问题。 为了方便自己使用,我利用它给出的 C# 算法代码,编写了一个 .NET 2.0 的图形界面程序。这个程序界面虽然很简单,但是功能还是比较全面的。
  1. 它可以向命令行版本一样,采用图形界面操作来完成压缩一个 JavaScript 脚本文件。
  2. 输入文件可以和输出文件相同。
  3. 可以选择输入多个 JavaScript 脚本文件,合并压缩为一个 JavaScript 脚本文件。
  4. 当输入多个 JavaScript 脚本文件时,可以指定它们合并的前后顺序。
  5. 输入文件可以直接拖放到列表中,而不必非要用打开对话框添加。
  6. 可自动判断输入文件是否重复添加。
  7. 增加了对注释中条件编译语句压缩的支持。
下载:jsmingui.zip 注意:需要安装 .NET 2.0 运行库才能运行该程序。

» 阅读全文

4月
07

phpserializer.js 更新

Opera Mobile 这个 phpserializer.js 开始来自 www.devpro.it,后来我将其引入了 PHPRPC 中,今天安装了 Windows Mobile 5 模拟器,并在上面安装了 Opera Mobile 版,打开 CoolCode.CN 后发现所有用了 PHPRPC 的插件都不好用了。因为 Windows Mobile 5 上没有 JavaScript 调试器,而且 Opera Mobile 本身也不报错,所以很难调试,后来通过从本机用 Ethereal 抓包分析的方法,断定是 phpserializer.js 中序列化部分有问题。之后单独对它进行编程调试,发现原因出自 constructor 属性上,该属性对于内置对象来说,在 Opera Mobile 上的值与 PC 上是不同的。 该文件在 PHPRPC 中和使用 PHPRPC 的插件中都包含,使用它的 WordPress 插件有:Alexa RankCoolPlayerCoolWeatherGooglePRPagePost 2。它们现在都已经进行了更新,使用了这些插件的用户可以重新下载更新,之后就可以在 Opera Mobile 上完美的运行这些插件了。 右图为在 Opera Mobile for Windows Mobile 5 Pocket PC 的截图。

» 阅读全文

该函数来自 http://valyala.narod.ru/huinya/pow_mod.html,利用它计算 128 位二进制数的 powmod 只需要 200 毫秒左右,而其他几个 BigInt.js 中的 powmod 函数计算这种长度的数字都需要 400-800 毫秒。因此用该函数来实现密钥交换算法的话,会得到较高的处理速度。最后 3 个函数是我补充的,str2num 用于将 packString 转化为 BigInt,num2str 用于将 BigInt 转化为 packString,rand 用于生成 n 位的随机数,如果 s = 1,则将第 n 位置一,以保证该随机数正好 n 位。

» 阅读全文

原来,在从 PHP 中直接传递字符串给 JavaScript 时,直接用了 addcslashes,如果传递的是带有 utf-8 编码汉字的,就用 "\0..\037\042\134",如果纯 ascii 范围内的字符串,就用 "\0..\037\042\134\177..\377"。但是今天在写加密程序时发现,发现程序有时行,有时不行。后来发现原来是 \v \a 搞的。addcslashes 会把 \007..\015(八进制) 转义成 \a\b\t\n\v\f\r,而其中 \a 这个 IE 和 Firefox 都不认识,\v 这个 Firefox 认识,IE 不认识。所以我写了下面这个函数,用它可以就可以转化成 JavaScript/JScript 所认识的字符串了(其中 $flag 表示是否转义 ascii 码大于 127 的字符)。感谢五帝同学的帮助! /* @author andot & wudi */ function addjsslashes($str, $flag = true) { if ($flag) { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134\177..\377"); } else { $str = addcslashes($str, "\0..\006\010..\012\014..\037\042\047\134"); } return str_replace(array(chr(7), chr(11)), array('\007', '\013'), $str); }

» 阅读全文