Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > построчный вывод в броузер |
Автор: burakov 20.11.2009, 16:20 | ||
Добрый день. включил у себя activex написал скрипт сканирования каталогов рекурсивно хочу теперь чтобы файлы при сканировании построчно выводились в броузер - ну или как в примере в textarea вот код
поставил вроде и задержку, но страница все равно зависает , пока все файлы не отсканируются Вопрос, как сделать так, чтобы нашел мой GetFile файлик в каталоге и СРАЗУ отобразил его в textarea не дожидаясь конца сканирования каталога ... Спасибо... |
Автор: Itsys 20.11.2009, 22:25 |
Пока работает процедура никакого обновления не будет. Надо за один вызов процедуры ыполнять вывод только одного файла, т.е.: 1. Задал начальный путь 2. Вызвал процедуру 3. Выдал один файл и запомнил в глобальной переменной какой файл выдан 4. В конце процедуры setTimeout 5. Вызвал процедуру 6. Выдал файл, следующий за запомненым и запомнил в глобальной переменной какой файл выдан и т.д. с пункта 4 |
Автор: burakov 23.11.2009, 11:19 | ||
Добрый день, ничего у меня не получается... Такое впечатление , что пока js хоть чуть чуть думает (выполняет процедуру даже запущенную по timeout) никакого постепенного отображения не БУДЕТ!!! Кроме страничка на момент вычислений "зависает", так что допустим элемент select не раскрывается - вот пример тому следующий код
Как видно и цикл запускается по setTimeout и само отображение информации запускается по setTimeout. ОДНАКО зависание странички наблюдается КОНКРЕТНОЕ... Пока цикл for не закончится - ни какое такое мало мальски динамическое (постепенное) отображение document.write не наблюдается!!!! Друзья!!! Я хочу НЕВОЗМОЖНОГО от JS или что то не так делаю? Напомню таки чего хочется .... есть скрипт сканирования каталогов (на предмет файлов) рекурсивно для получения списка файлов и последующей его обработки. Но когда файлов много (2000 и более) страница (html) некрасиво зависает до окончания сканирования .... а я не хочу чтобы эффект зависания имел место, да к тому же хочу чтобы на странице динамично отображался результат работы скрипта - т.е. выводились бы имена файлов (ну пусть даже и не поименно, а хотя бы по несколько штук, т.е. за какой то период времени выраженный в миллисекундах т.е. небольшой ![]() Возможно ли такое сделать средствами JS??? Ведь есть же ajax и т.п. технологии. Как то ж люди добиваются эффекта более менее похожести работы web приложения на работу локальной программы!? Спасибо... |
Автор: burakov 23.11.2009, 13:39 | ||||
добрый день еще раз ![]() Покопался в инете и выяснил, что для того чтобы была динамика в отображении содержимого необходимо отказываться от операторов циклов и переносить все это в функции за запуском по setTimeout. И вообщем то заработало.... вот например код
делает то что мне надо, НО мне нельзя ведь FSO глобально объявлять - мне рекурсия нужна но на следующем коде пишет что "не определен параметр f" понимаю, что дело тут в области видимости объекта - но как правильно написать не пойму. пример кода
|
Автор: Itsys 23.11.2009, 15:42 | ||
Не увидел последнее собщение, но идея такова:
Добавлено через 1 минуту и 45 секунд ЗЫ Обрати внимание на сроки 22-24 |
Автор: burakov 23.11.2009, 16:36 | ||||||
Спасибо. за ответы. последний код немного запутан (для меня) но в принципе понятен. заменить цикл вложенными функциями у меня получилось... вопрос сейчас в следующем Не могу понять... почему wsh нормально отрабатывает мой скрипт рекурсивного сканирования каталогов (правда если файлов много как например в каталоге windows - говорит "Недостаточно памяти" - отчего такая ошибка - при использовании циклов такой ошибки не возникает!)
а вот в броузере точно такой же код НЕ РАБОТАЕТ ругается на то что объект s (не имеет определения) впрочем если убрать s, то тогда точно такое же ругательство говорит на объект f. подозреваю, что дело в области видимости - но ведь точно такой же код без проблем работает в WSH!!! Вот этот злополучный код...
Ну и наконец через эксперименты с областью видимости объектов удалось просканировать каталог с тем эффектом который мне нужен - правда за счет того что объект FSO создаю глобально рекурсивно такое сделать не получится КОД
Почему же все таки не получается прочесть файлы рекурсивно??? |
Автор: Itsys 23.11.2009, 17:55 | ||
В этом случае f и s надо вынести в глобальный контекст
|
Автор: brother79 24.11.2009, 08:03 |
Sory, не так вопрос понял ![]() |
Автор: burakov 24.11.2009, 10:20 | ||||||
Добрый день, спасибо огромное за участие в конце концов все разрешилось.... Если объекты f, s объявить глобально - то скрипт НЕ РАБОТАЕТ. и вообщем то понятно почему... НО все дело оказалось в моем написании setTimeout Я его вызывал вот так
а почему то правильно работает так
хотя я синтаксис из справочника по js вроде бы подсмотрел :(. вообщем вот рабочий код скрипта
правда из-за этой вот псевдо многопоточности список файлов выходит хитрозадо ![]() но в принципе все заработало СПАСИБО. А как программно можно узнать что скрипт закончил работу.... ставлю на textarea onLoad но ничего не происходит? |
Автор: Itsys 24.11.2009, 17:30 | ||
Хотя бы так:
|
Автор: burakov 25.11.2009, 09:22 |
огромное спасибо за пример. очень помогли ... СПАСИБО. |