我在项目开发中发现dtree在点击完后,如果整个画面进行刷新之前的焦点位置就不正确了。初始对程序进行了分析后没有发现问题,最后就对dtree中读写cookie的地方进行了改造,改造完后程序运行正常。
下面把改造后的程序代码贴出来大家给提提意见。
// [Cookie] Sets value in a cookie
dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) {
writeCookie(cookieName, cookieValue);
};
// [Cookie] Gets a value from a cookie
dTree.prototype.getCookie = function(cookieName) {
return readCookiefile(cookieName);
};
//create temp file Object save url
function getFileObjectf(readORwrite){
var fso, ts;
var file = getTempDir() + "/f1";
fso=new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FileExists(file)){
fso.createtextfile(file ,true);
}
ts = fso.OpenTextFile(file, readORwrite, true);
return ts;
}
//create temp file Object save doc
function getFileObjectd(readORwrite){
var fso, ts;
var file = getTempDir() + "/f2";
fso=new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FileExists(file)){
fso.createtextfile(file ,true);
}
ts = fso.OpenTextFile(file, readORwrite, true);
return ts;
}
//write file cookieValue
function writeCookie(cookieName, cookieValue){
var ts;
var ForWriting=2;
if(cookieName=="cstree"){
ts = getFileObjectf(ForWriting);
}
if(cookieName=="cotree"){
ts = getFileObjectd(ForWriting);
}
ts.write(cookieValue);
ts.close();
}
//get file size
function getFileByte(filename){
var fso,f;
fso=new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FileExists(filename)){
return -1;
}
f=fso.GetFile(filename);
return f.size;
}
//read file cookieName
function readCookiefile(cookieName){
var ts, rs;
var len = 0;
var ForReading = 1;
var filepath = getTempDir();
if(cookieName=="cstree"){
ts = getFileObjectf(ForReading);
len = getFileByte(filepath + "f1");
}
if(cookieName=="cotree"){
ts = getFileObjectd(ForReading);
len = getFileByte(filepath + "f2");
}
if(len<=0){
rs = "";
}else{
rs = ts.readLine();
}
ts.close();
return rs;
}
//get system temp dir
function getTempDir(){
var fso = new ActiveXObject("Scripting.FileSystemObject");
return fso.GetSpecialFolder(2);
}
改写为本地读写文件后有个坏处就是必须修改IE的安全设置。