Google Gears应用:记录最近访问页面

[ 2007-06-13 14:40:59 | 作者: {$author:name$} ]  编辑  删除
字体大小: | |
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>


关于'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 评论Feed: http://ifisker.com/blog/feed.asp?q=comment&id=1033
UTF-8 Encoding 引用链接: loading...

浏览模式: 显示全部 |评论: 3 |引用: 0 | 排序 | 浏览: 0
引用 魔兽世界私服*
[ 2008-03-15 23:58:00 ]  编辑  删除
GG不错,让很多人赚了很多钱
引用 完美世界私服*
[ 2008-03-16 00:03:02 ]  编辑  删除
认真看看
引用 seo*
[ 2008-09-26 10:40:28 ]  编辑  删除
好&nbsp;支持&nbsp;写的不错<br />

发表评论
表情图标
[smile][confused][cool][cry]
[eek][angry][wink][sweat]
[lol][stun][razz][redface]
[rolleyes][sad][yes][no]
[heart][star][music][idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   注册?
验证码* 请输入验证码