Задача:
Чтение файлов и папок внешнего жесткого диска (1Тб) и подготовка данных для последующей загрузки в MySQL.
На их основе строится дерево папок.
Проблема:
1. Функция wait() не выводит сообщение вначале
2. При выполнении treeDir() подвисает браузер
Вопрос:
1. Как сделать появление сообщения вначале работы?
2. Возможно ли исключить подвисание IE, если да, то как?
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>test</title>
</head>
<body>
<script>
var fso = new ActiveXObject("Scripting.FileSystemObject")
function treeDir(dir, arr){
if(!fso.folderExists(dir)) {
alert('Путь не найден')
return false;
}
var f = fso.GetFolder(dir);
if(typeof arr == 'undefined') {
//arr = [результат, счётчик, уровень, разделитель, папка, диск, корневая папка]
//папка: 0-Файл, 1-папка с подпапками, 2-папка без подпапок
var arr = ['', 1, 2, '', 0, document.MyForm.disk.value, document.MyForm.name.value]
var dirStart = f.name
var PathStart = dir
}
var rezult = ''
var level = arr[2]
arr[2]++
var fc = new Enumerator(f.files);//Файлы
while (!fc.atEnd()){
if((fc.item().attributes&4) == 0){
arr[1]++
var left = arr[1]
arr[1]++
var right = arr[1]
var DateM = new Date(fc.item().DateLastModified)
var DateMod = DateM.getYear()+'-'+(DateM.getMonth()+1)+'-'+DateM.getDate()
rezult += arr[3]+'array(\''+fc.item().Name+'\', '+left+', '+right+', '+level+',0,'+arr[5]+','+fc.item().size+',\''+DateMod+'\')'+"\n"
arr[3] = ','
}
fc.moveNext()
}
arr[4] = 2
fc = new Enumerator(f.SubFolders);//Подпапки
while (!fc.atEnd()){
if((fc.item().attributes&4) == 0){
arr[1]++
var SubDirPath = fc.item()
var left = arr[1]
var retArr = treeDir(SubDirPath, arr)
arr[1] = retArr[1] + 1
var right = arr[1]
var DateM = new Date(fc.item().DateLastModified)
var DateMod = DateM.getYear()+'-'+(DateM.getMonth()+1)+'-'+DateM.getDate()
rezult += arr[0]
rezult += arr[3]+'array(\''+fc.item().Name+'\', '+left+', '+right+', '+level+','+retArr[4]+','+arr[5]+','+fc.item().size+',\''+DateMod+'\')'+"\n"
arr[4] = 1
arr[3] = ','
}
fc.moveNext()
}
if(typeof PathStart != 'undefined') {
rezult += arr[3]+'array(\''+arr[6]+'\',1,' + (arr[1] + 1) + ',1,1,'+arr[5]+')'+"\n"
}
arr[0] = rezult
arr[2] = level
return arr
}
function wait(){
var waitMess = document.createElement('div')
var wait = document.createElement('div')
wait.className = 'wait'
waitMess.className = 'waitMess'
waitMess.innerHTML = 'Загрузка данных. Ждите...<br>ИндикаторЗагрузки'
document.body.insertBefore(waitMess, document.body.childNodes[0])
document.body.insertBefore(wait, waitMess)
}
</script>
<style>
.waitMess{
position:absolute;
width:200px;
left:49%;
top:49%;
text-align: center;
background-color: #CED0DB;
border: outset #F3F4F6 3px;
padding: 10px;
font-size: 18px;
}
.wait {
position:absolute;
filter:alpha(opacity=50);
width:100%;
height:97%;
background-color: #6699FF;
}
</style>
<form action="#" method="get" name="MyForm">
Диск№:<input name="disk" type="text" value="1" style="width:250px; margin-left:52px"><br>
Путь:<input name="path" id="path" type="text" value="D:" style="width:250px; margin-left:69px""><br>
Наименование:<input name="name" type="text" value="1 Наименование 01.10.2009" style="width:250px;"><br>
<input name="test" type="button" value="test" style="width:100px;margin-left:103px" onClick="
wait()
rezult = treeDir(document.MyForm.path.value)
if(rezult) alert(rezult[0])">
</form>
</body>
</html>