· 在线留言 · 关于我们
全国7X24小时服务热线:
029-8831-1253
 
当前位置:首页>信息化频道>行业信息化

行业信息化

用Flash来作浏览历史功能
西安软件公司, 西安软件开发 http://www.jzsoftit.com , 西安网站建设, 西安网站制作 http://www.jzsoftit.cn


很多网站都有“浏览历史”这个功能,通常都是显示在页面的一侧,特别是一些购物网站,这个功能会让用户使用网站的体验好一些;例如当当网或淘宝网都有这样的功能!

 

这样的功能通常的实现方式都是把记录记在客户端的Cookei中,而记在cookie中又多分为两种情况:
1、记网址和标题,这个功能与服务器端无关,直接在客户端生成和显示;
2、记产品的一个key,然后传给服务器来生成这个功能;

但无论是哪种,都是在cookie中存内容;

在YUI的网站优化的一个建议中,就建议减小Cookie体积,为什么要减少?因为coockie是通过HTTP文件头来往于服务器和浏览器之间的,Cookie的大小,会决定在这之间传输内容的大少以及时间。所以要尽可能让coockie小。

那 么,如果不在cookie中存放一些内容,浏览历史的的这个功能应该怎么作?存在服务器端吗,太伤了!前几天我突然想到用FLASH来实现这个功能,因为 FLASH是可以存放一些内容到特定的目录的,而且与cookie无关,更特别的是他可以存放多种数据类型,只要是FLASH支持的就可以。

今天闲下无事,在家里实现一下这个功能!

先说一下原理:

网页中有javascript代码;
网页中有一个flash文件;

javascript 把标题和链接传给flash,flash把他存在客户端,然后再把已经有的历史返回给javascript,javascript再把返回的内容显示出来,这就是历史记录功能了!

 

代码部分没有好好想,想到哪就写到哪了,没有优化!

JavaScript部分的代码:

程序代码
//在页面的最后加一个FLASH文件
function setLishi(){
 var _title = document.getElementsByTagName("title")[0].innerHTML;
 var _link = location.pathname;
 var _body = document.getElementsByTagName("body")[0];
 var _div = document.createElement("div");

 var html = "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ";
 html += "codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"
width="1" height="1">";
 html += "<param name="movie" value="flash.swf?t="+encodeURIComponent(_title)+"&l="+encodeURIComponent(_link)+"" />";
 html += "<param name="quality" value="high" />";
 html += "<embed src="flash.swf?t="+encodeURIComponent(_title)+"&l="+encodeURIComponent(_link)+"" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" ";
 html += "type="application/x-shockwave-flash" width="1" height="1">";
 html += "</embed>";
 html += "</object>";
 
 _div.innerHTML = html;
 _body.appendChild(_div);
}

//把FLASH传回的内容显示出来
function showLishi(ll){
 var links = ll.split("_zishu_");
 var html = "";
 for(var l=0; l<links.length; l++){
  html += "<li>"+links[l]+"</li>";
 }
 document.getElementById("lishi").innerHTML = html;
 return;
}

setLishi();


FLASH部分的代码:

程序代码
stop();
var tt = t;

var cookieName = "lishi";
var lishi:SharedObject = SharedObject.getLocal(_root.cookieName, "/");

function getLishi(){
    return(lishi.data[_root.cookieName]);
}

function setLishi(lishiCookie){
 var allLishi = new Array();
 allLishi[0] = tt;
 if(lishiCookie.length > 0){
  for(var l=0; l<lishiCookie.length; l++){
   allLishi[l+1] = lishiCookie[l];
   if(l == 3) break;
  }
 }
 lishi.data[_root.cookieName] = allLishi;
}

var lishiCookie = getLishi();
var htmlLishi = lishiCookie.join("_zishu_");
getURL("javascript:showLishi(""+htmlLishi+"");");
setLishi(lishiCookie);
 

1、感觉这种方式从大小上来说,稍好于用COOKIE的方式;因为这个FLASH文件为0.3K;而种COOKIE的方式会使COOKIE在2K左右;

2、在FLASH中用getURL的方式来传送一个字符串,在IE中和URL的限制是一样的,不行大于2K;这也就是说,每次传输要在2K以内,但通常一个浏览历史的功能一次就可以了;

3、这种的代码有些麻烦,但有一个好入是可以跨浏览器,就是说你在IE中的历史,到了FIREFOX中还是存在的;

很多功能想起来很好实现,作起来问题多多,不一定和理论上一样!这也是我为什么要作这个实验的原因,因为一开始想通了,但没有实际作过!

好与坏根据自己网站的实际情况弄吧,总的来说这种方式没有非常大的优于用COOKIE的方式! 不过有了这个思路,可以用于网站的其它功能!

关于我们  | 果蔬质量追溯系统  | 网站建设  | 网站推广  | 网站运营  | 软件开发  | 软硬件集成  | 软件选型  | 软件外包  | 系统托管  | 成功案例   | IT硬件  | 常见问题  | 在线留言  |  联系方式
  © 2005 www.jzsoftit.com  西安捷众软件科技有限公司 版权所有
地址:西安市高新区科技路东口中天国际B座19层 电话:029-88311253   QQ:1009213309  Email:jzsoftit@163.com