Google Gears应用:记录最近访问页面
Google Gears可以非常方便的创建、操作数据库。
完全是一个Javascript的后台程序。
现在似乎还没有什么人研究他的使用。
首先需要加载gears
这是一个标准的加载gears并创建数据库对象的范例
<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
var db = google.gears.factory.create('beta.database', '1.0');
</script>
<script type="text/javascript">
var db = google.gears.factory.create('beta.database', '1.0');
</script>
关于'beta.database'对象,以及ResultSet的方法可以查阅Google Gears API Developer's Guide
http://code.google.com/apis/gears/api_database.html
现在我用“记录最近访问页面”这样一个小程序来演示一下数据库的读、写、删除操作
<!-- 加载Google Gears -->
<script type="text/javascript" src="gears_init.js"></script>
<script type="text/javascript">
// just a demo for record rencent view pages
// by fisker http://www.x2y2.com/fisker/
// if you want to try,you should get Google Gears
// get Google Gears at http://code.google.com/apis/gears/install.html
var dbObject; //定义数据库操作对象
var dbOpened = false; //数据库是否已经连接
function openDB(){
//打开数据库,不存在则创建数据库
//fisker_blog为表名,字段myPage myTitle Timestamp
try{
dbObject = google.gears.factory.create('beta.database', '1.0');
if (dbObject) {
dbObject.open('fisker_blog');
dbObject.execute('create table if not exists fisker_blog' +' (myPage varchar(255),myTitle varchar(255), Timestamp int)');
dbOpened=true;
}
} catch (e) {}
}
function closeDB(){
//关闭数据库
if(dbOpened){
try{
dbObject.close();
dbOpened=false;
} catch (e) {}
}
}
function recordThis(){
//记录当前页
if (!dbOpened){openDB();}
var currTime = new Date().getTime();
var nowPage = window.location.href;
var nowTitle = document.title.substring(0,10);
var sql = 'select * from fisker_blog where myPage="'+nowPage+'"';
var rs = dbObject.execute(sql);
try{
dbObject.execute('insert into fisker_blog values (?, ?, ?)', [nowPage, nowTitle, currTime]);
} catch (e) {}
rs.close(); //这里不要忘记关闭
}
function getRencent(){
// 读取数据库,这里只是演示一下,最好是返回数组。
if (!dbOpened){openDB();}
var arr = ['', '', '', '', '', '', '', '', '', ''];
var arr2 = ['', '', '', '', '', '', '', '', '', ''];
var sql = 'select * from fisker_blog order by Timestamp desc';
var rs = dbObject.execute(sql);
var j=0;
while (rs.isValidRow()) {
if(j<10){
arr[j] = rs.field(0);
arr2[j] = rs.field(1);
}else{
try{
//删除多余的记录,以免记录太多,影响速度
dbObject.execute('delete from fisker_blog where Timestamp=?', [rs.field(2)]);
} catch (e) {}
}
j++;
rs.next();
}
rs.close();
showRencent(arr,arr2); //显示结果,函数在下面
}
function showRencent(url,title){
//显示结果
try{
var html="<ul>";
for (var j = 0; j < url.length; j++) {
html+="<li><a href=\""+url[j]+"\" title=\""+title[j]+"\">"+title[j]+"<\/a><\/li>";
}
html+="</ul>";
document.getElementById("rencent").innerHTML=html;
} catch (e) {}
}
function fiskerRecord(){
if (!window.google || !google.gears) {
return;
}else{
openDB();
recordThis();
getRencent();
closeDB();
}
}
</srcipt>
<body onload="javascript:fiskerRecord();">
<div id="rencent">loading...</div>
</body>
这里是一个完整的Demo:
http://www.x2y2.com/sites/Google.Gears.Rencent.Pages/
评论Feed: http://ifisker.com/blog/feed.asp?q=comment&id=1033
引用链接: loading...
浏览模式: 显示全部 |评论: 3 |引用: 0 | 排序 | 浏览: 0
[ 2008-03-15 23:58:00 ]
GG不错,让很多人赚了很多钱
[ 2008-03-16 00:03:02 ]
认真看看
[ 2008-09-26 10:40:28 ]
好 支持 写的不错<br />

