IE7 виснет при чтении жесткого диска
Задача:
Чтение файлов и папок внешнего жесткого диска (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> |
Цитата:
Цитата:
|
Спасибо за идею
Цитата:
|
Часовой пояс GMT +3, время: 18:05. |