- 主题:[求助][JavaScript]奇怪的代码,为什么总是提示文件对象为空?
小弟有下面几行简单的javascript代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> Test </title>
</head>
<body>
<h1></h1>
<p style="font-family:verdana;font-size:110%;color:Black">Good luck!</p>
<Font=Verdana></Font>
<form action="somepage.asp">
<input type="button" value="Test" name="BtnRead"/>
</form>
</body>
</html>
<script language="JavaScript" type="text/javascript">
var ForReading = 1; //以只读方式打开文件。
var ResetPointer = 0; //重置指针.
var sfnstr = "J:\\data.txt"; //指定文件
var fso = new ActiveXObject("Scripting.FileSystemObject");
var sfo = fso.OpenTextFile(sfnstr,ForReading,true,0);
var BtnRead=document.forms[0].elements["BtnRead"]
//读取按钮
BtnRead.onclick=function(){
ReadAndWrite();
}
//读取一行
function ReadAndWrite(){
if(ResetPointer == 1)
{
var sfo = fso.OpenTextFile(sfnstr,ForReading,false,0);
}
if(!sfo.AtEndOfStream)
{
var sfl = sfo.ReadLine();
alert(sfl);
}else{
sfo.Close();
alert("End!");
}
}
</script>
但运行的时候,总提示 sfo.AtEndOfStream 的sfo为空,但是如果把以下3行注释掉,就没问题了。我曾试过在以下3行内加alert("Here")测试,发现程序并没有运行以下3行的内容:
if(ResetPointer == 1)
{
var sfo = fso.OpenTextFile(sfnstr,ForReading,false,0);
}
这是什么原因?请不吝赐教啊!
--
FROM 132.166.20.*
1、ActiveXObject只能在IE下面跑。
2、直接读客户端本地文件,就算在IE里面,这种安全攻击性质的脚本要求用户的权限
允许设置。
【 在 quickly 的大作中提到: 】
: 小弟有下面几行简单的javascript代码:
: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
: <html>
: ...................
--
修改:dhcn FROM 125.33.93.*
FROM 125.33.93.*
是的,我知道权限问题。但由于javascript方便、易写,所以我用了HTML Application转换为独立的应用软件,避开了IE了的权限限制。像偶得帖子所说,只要注释了其中的三行就可以成功运行了,即可以读写本地文件了。真的不明白其中的缘由,所以上来请教下。/hand
--
修改:quickly FROM 132.166.20.*
FROM 132.166.20.*
写本地程序不如换 nodejs
比靠 ie 舒服太多了
【 在 quickly (快剑) 的大作中提到: 】
: 是的,我知道权限问题。但由于javascript方便、易写,所以我用了HTML Application转换为独立的应用软件,避开了IE了的权限限制。像偶得帖子所说,只要注释了其中的三行就可以成功运行了,即可以读写本地文件了。真的不明白其中的缘由,所以上来请教下。/hand
--
FROM 123.119.145.199
nodejs貌似还要安装文件什么的,俺不是专业的程序员,就偶尔写些小程序,所以只好就手用IE了。。。。
【 在 withinsea 的大作中提到: 】
: 写本地程序不如换 nodejs
: 比靠 ie 舒服太多了
:
--
FROM 132.166.20.*