我想通过js读取COOKIE记录,有2个文件
1-------- index.html
2-------- playHistory.jsindex.html 源码<script src="playHistory.js"></script><script>PlayHistoryObj.addPlayHistory('{playpage:name}',location.href)</script><div  id="playhistory">暂无播放历史列表</div><script>PlayHistoryObj.viewPlayHistory('playhistory')</script>
function PlayHistoryClass(){
var cookieStr,nameArray,urlArray,allVideoArray;
this.getPlayArray=function (){
cookieStr = document.cookie;
//alert(cookieStr)
var start = cookieStr.indexOf("max_cms2_v=") + "max_cms2_v=".length,end = cookieStr.indexOf("_$_|",start),allCookieStr= unescape(cookieStr.substring(start,end))
if(end==-1){allCookieStr="";return;}
allVideoArray = allCookieStr.split("_$_");
nameArray = new Array(),urlArray = new Array();
for(var i = 0; i < allVideoArray.length; i++){
var singleVideoArray = allVideoArray[i].split("^");
nameArray[i] = singleVideoArray[0];urlArray[i] = singleVideoArray[1];
}
}
this.viewPlayHistory=function (div){
var tag = $(div),n = 10
if(navigator.cookieEnabled){
var innerStr = "";
for(var i =nameArray.length - 1; i >= 0; i--){
var textCount = nameArray[i].replace(/[^\x00-\xff]/g,"cc").length;
if(textCount <= n*2){
texts = nameArray[i];
}else{
texts = nameArray[i].substr(0,n)+"...";
}
innerStr += "<a href=\"" + urlArray[i] + "\"" + " title=\"" + nameArray[i] + "\">" + texts + "</a><br />"
}
if (innerStr.length>0){set(tag,innerStr)}
}else{
 set(tag,"您浏览器关闭了cookie功能,不能为您自动保存最近浏览过的网页。")
}
}
this.addPlayHistory=function (name,url){
var count = 10; //播放历史列表调用条数
var code_name = escape(name) + "^",code_url = escape(url) + "_$_",expireTime = new Date(new Date().setDate(new Date().getDate() + 30)),timeAndPathStr = "|; expires=" + expireTime.toGMTString() + "; path=/";
if(cookieStr.indexOf("max_cms2_v=") != -1 || cookieStr.indexOf("_$_|") != -1){
var newCookieStr = "";
if(allVideoArray.length < count){
for(i in allVideoArray){
if(nameArray[i] == name) continue;
newCookieStr += escape(nameArray[i]) + "^" + escape(urlArray[i]) + "_$_" ;
}
}else{
for(var i = 1; i < count; i++){
if(nameArray[i] == name) continue;
newCookieStr += escape(nameArray[i]) + "^" + escape(urlArray[i]) + "_$_" ;
}
}
document.cookie = "max_cms2_v=" + newCookieStr + code_name + code_url + timeAndPathStr;
}else{
document.cookie = "max_cms2_v="+ code_name + code_url + timeAndPathStr;
}
}
}
var PlayHistoryObj=new PlayHistoryClass()
PlayHistoryObj.getPlayArray()

解决方案 »

  1.   

    那我这2个文件有问题吗?在浏览器中打开 index.html一直没有找到问题啊···帮帮忙吧····
      

  2.   

    少了2个函数,把这2个函数加到JS文件的头部就可以了
    function $(id){
    return document.getElementById(id);
    }
    function set(obj, str){
    obj.innerHTML = str;
    }
      

  3.   

    发个以前写的类似功能的代码,LZ可以参考一下。
    <div id='ddd' style="width:200px;padding:20px;border:1px #888 solid;"></div>
    <script language="javascript">
    //输出记录
    function ShowLastView(key, splitFlag, maxNum, subSplit, id) {
    var _div = document.getElementById(id);
    var _v = cookieOperate.searchCookie(key);
    if(_v) {
    var _Temp="";
    var _arr = _v.split(splitFlag);
    var _subArr;
    var _len = _arr.length;
    for(var i = 0; i < _len; i++) {
    _subArr = _arr[i].split(subSplit);
    _Temp += "<a href='"+ _subArr[1] +"'>标题:"+ _subArr[0] +"<br/>时间:"+ _subArr[2] +"</a><br />";
    }
    _div.innerHTML = _Temp;
    }
    }
    ShowLastView("lastview", "$", 10, "^", "ddd");

    //记录访问的页面
    function StoreLastView(key, flag, splitFlag, maxNum, subSplit, seconds) {
    var _v = document.title + subSplit + location.href + subSplit + new Date().toLocaleString();
    cookieOperate.writeCookie({k: key, v: _v, f: flag, s: splitFlag, n: maxNum, t: seconds});
    }
    StoreLastView("lastview", false, "$", 10, "^", 500);

    </script>/***************************************/
    /* title: operate cookie
    /* author: danica7773
    /**************************************/var cookieOperate = {
    isCookie: function() {
    return navigator.cookieEnabled;
    },
    cookieMap: function() {
    var _map = {};
    if(this.isCookie()) {
    var _cookie = document.cookie.split(';');
    var _len = _cookie.length;
    var _subItem;
    for(var i = 0; i < _len; i++) {
    _subItem = _cookie[i].split('=');
    _map[decodeURI(_subItem[0].replace(/^\s*|\s*$/g, ''))] = decodeURI(_subItem[1]);
    }
    }
    return _map;
    },
    searchCookie: function(key) {
    var _map = this.cookieMap();
    return (_map[key])? _map[key] : null;
    },
    deleteCookie: function(key) {
    var _value = this.searchCookie(key);
    if(_value) {
    this.writeCookie({k: key, v: ''});
    }
    },
    /**
    /*op = {
    /* k: key,
    /* v: value,
    /* f: true | false,  //(cover the old record)
    /* s: splitFlag
    /* n: 10,            //max number 
    /* t: expires,       //seconds
    /* d: domain,
    /* p: path,
    /* }
    **/
    writeCookie: function(op) {
    var _cookie = [];
    if(op.k && typeof(op.v) !== 'undefined' && op.v !== null) {
    var _v = encodeURI(op.v);
    if(!op.f) {
    var _s = (op.s)? op.s : '|';
    var _n = (op.n)? op.n : 10;
    var _old = this.searchCookie(op.k);
    if(_old) {
    var _arr = _old.split(_s);
    var _len = _arr.length;
    for(var i = 0; i < _n - 1; i++) {
    if(!_arr[i]) {
    break;
    }
    _v += _s + encodeURI(_arr[i]);
    }
    }
    }
    _cookie.push(op.k + '=' + _v);
    }
    if(op.t) {
    _cookie.push('expires=' + this.setExpires(op.t));
    }
    if(op.d) {
    _cookie.push('domain=' + op.d);
    }
    if(op.p) {
    _cookie.push('path=' + op.p);
    }
    document.cookie = _cookie.join(';');
    },
    setExpires: function(seconds) {
    var _d = new Date();
    _d.setTime(_d.getTime() + (seconds * 1000));
    return _d.toGMTString();
    }
    }