问题描述
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>统计访问页面的人数</title><script type="text/javascript"> function total(path){var fso, tf, count;fso = new ActiveXObject("Scripting.FileSystemObject");if(!fso.FileExists(path)){tf = fso.CreateTextFile(path, true);tf.write("1");tf.Close(); } f = fso.OpenTextFile(path,1); count = Number(f.ReadLine()); //alert(count); f = fso.OpenTextFile(path,2); f.Write(count+1); document.getElementById("num").innerHTML = count; f.Close();}</script></head><body onload='total("c:\Visitor.txt")'>页面来访人数为:<span id="num"></span></body></html>
解决方案
你的代码仅仅只能在IE浏览器(360浏览器是基于IE内核的 所以360也可以运行)下面运行。 这个 ActiveXObject Scripting.FileSystemObjec 是IE内置的 ActiveX 调用这个可以访问本地文件,如果有什么不懂的,或者希望看到这个对象提供什么方法:参考文档:http://baike.baidu.com/view/347454.htm function total(path){//path 为传入的文件路径 var fso, tf, count;//声明变量fso = new ActiveXObject("Scripting.FileSystemObject");//创建 ActiveX 对象if(!fso.FileExists(path)){// FileExists 这个方法判断文件是否存在如果不存在 tf = fso.CreateTextFile(path, true);//调用 CreateTextFile 方法创建文件,这个方法有个重载(就是这个方法可以接受2个参数的,可以接受1个参数的)最后一个true表示这个文件如果存在,就覆盖这个文件 tf.write("1");//写文件为1 tf.Close();//关闭这个文件流} f = fso.OpenTextFile(path,1);// OpenTextFile有个重载和 CreateTextFile方法类似,1在js中可以隐式转换为true count = Number(f.ReadLine());//调用ReadLine 读取文件中的数据,然后用了一个Number来转换为数字 //alert(count); f = fso.OpenTextFile(path,2); f.Write(count+1);//把累加的值在重写回去 document.getElementById("num").innerHTML = count;//把这个值写入到一个dom对象中 f.Close();//关闭文件流}希望能帮上忙
解决方案二:
用此方法,则相关的文件系统操作只能局限于基于IE内核的浏览器之中!
解决方案三:
用fso在你本地写一个文件,里面放入记数。每次有人访问时,文件中的数据++,将文件中的数字读出来,显示在id="num"的span里。