版本检测的功能并非是软件特有的,chm电子书也可以有。

[music1g play=67451]

很多时候 我们制作一些chm电子书籍出来跟大家分享,由于一些原因,电子书籍可能会更新,比如我们著名的《PHP中文手册》里面就包含了个版本检测功能(因为它要结合官方与论坛的一些人的评论,自然中文翻译就需要时间去更新了)。

以它为蓝本,记录一下这个功能实现需要的一些相关操作。先看看首页的最终效果(如图).

要是我们下载一个旧版本的PHP手册回来之后,打开后它就会在首页有如上图所提示:已有新版本,请下载的红色标语。右键查看源代码,发现关键代码如下:

<script type="text/javascript">var php_manual_chm_version="2011-02-14 19:12:47";var php_manual_chm_lang="zh";</script><script type="text/javascript" src="http://phpdoc-zh.googlecode.com/files/php_manual_zh.chm.version.js?t=1297681967"></script><script type="text/javascript" src="http://phpdoc-zh.googlecode.com/files/php_manual_zh.chm.version.util.js?t=1297681967"></script>

这个是javascript的小脚本,先是定义了PHP手册的版本是2011-02-14 19:12:47,语言是zh(就是中文)。然后给了两行脚本,js脚本后面问好所接的t代表时间,1297681967是unix下面的时间戳,可以到unix时间戳转换网站 上面查询,如图:

php_manual_zh.chm.version.util.js这个文件的最后,有段编码:

if (strtotime(php_manual_chm_online_version)>strtotime(php_manual_chm_version))
{
if (php_manual_chm_lang && php_manual_chm_lang=='zh')
{
document.write("    <strong style="color: red;">"+unescape("%u6700%u65B0%u7248%u672C%uFF1A")+php_manual_chm_online_version+unescape("%uFF0C%u60A8%u9700%u8981%u9A6C%u4E0A%u4E0B%u8F7D%u66F4%u65B0%uFF01 ")+"</strong>");
}
else
{
document.write("    <strong style="color: red;">Latest version : "+php_manual_chm_online_version+", please download it immediately.</strong>");
}
}

两个嵌套的IF语句,意思是比较你所打开的版本与网站上最新的版本的版本日期,如果有新版本,就看一下版本的语言,是中文的话,就用中文提示,是英文的话,就用英语提示新版本。其中的乱码是Unicode加密的,可以到Unicode加密解密网站解一下,得到如下图所示:

可以替换为自己喜欢的提醒文字。好了,剩下就把改好的这两个JS文件传到一个http服务器上面,在本地文件上内嵌相关代码即可。如图:

附相关的代码以及手册以供参考:

http://phpdoc-zh.googlecode.com/files/php_manual_zh.chm.version.js
http://phpdoc-zh.googlecode.com/files/php_manual_zh.chm.version.util.js

PHP中文手册参考:
http://code.google.com/p/phpdocs-cn-chm/downloads/list

藏剑山庄原创文章,未经允许,禁止转载!

原文链接:http://blog.yanwen.org/archives/687.html