【发布时间】:2021-07-31 13:22:38
【问题描述】:
场景:从正在运行的 HTA 中提取信息,并使用每 1 秒更新一次的信息更新 INPUT 字段。这个概念是在处理数千个文件(如 12300+ 个文件)时将 INPUT 字段用作一种进度条,这样它就不会只是坐在那里近半小时什么都不做!最终结果不会出错,但 INPUT 字段仍为空。
这是我的代码(我知道它“脏”但我只是用于测试):
<meta http-equiv='X-UA-Compatible' content='IE=8; IE=7' />
<html>
<head>
<hta:application id=oHTA
border=none
caption=no
contextmenu=no
innerborder=yes
scroll=no
showintaskbar=no
/>
<style>
body{
padding: 0;
margin: 0;
background-color: #000;
display: flex;
align-items: center;
justify-content: center;
}
img{width:100%;height:100%;left:0;top:0;position:absolute;}
div{z-index:1;position:absolute;color:black;top:80%;width:100%;}
input{width:20%;color:red;background:transparent;}
</style>
</head>
<body style='text-align:center;background:black;' >
<div>
<button id=click>Click</button><br>
</div>
<input type=text id=myinput />
<script language="vbscript">
mm=self.location.pathname
curdir = split(mm,"\")
for x =0 to ubound(curdir)
settimeout "updater(curdir(x))",10000
next
sub click_onclick
self.close
end sub
function updater(xx)
set ii = document.getelementbyid("myinput")
ii.value=xx
end function
</script>
【问题讨论】:
-
按原样运行代码将导致“错误:下标超出范围:'x'”。也许您的测试代码中有一个 On Error Resume Next?无论如何, settimeout 会创建一个每 x 毫秒(在您的情况下为 10 秒)运行的事件。将 settimeout 放在 for 循环中是行不通的。考虑异步。您当前的代码试图每 10 秒显示一个级别的路径。那是你要的吗?我不确定这将作为进度表有用。你对每个文件做了什么?也许进度显示可以显示当前正在处理的文件名。
-
感谢您的反馈。我最终以不同的方式执行此操作,消除了所有错误,并拥有一个功能齐全的 HTA!代码本身很广泛,我几乎没有 cmets 部分中整个内容的字符数量,并且无论如何都不知道如何输入它。再次感谢您的回复。