Страницы: 1
При запуске FireFox загружается JavaScript, который должен мониторить заданный каталог локальной файловой системы на предмет появления в нём новых файлов .TXT.
При обнаружении файла .TXT JavaScript обрабатывает файл и удаляет.
Я пока реализовал самый тупой вариант, что пришел в голову - использовать setInterval :
const Cc = Components.classes; const Ci = Components.interfaces; var paramsFolder = "C:\\iMacros\\Macros\\params\\"; window.setInterval(function(){ var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); file.initWithPath( paramsFolder ); var entries = file.directoryEntries; var array = []; while(entries.hasMoreElements()){ var entry = entries.getNext(); entry.QueryInterface(Ci.nsIFile); array.push(entry); } if (array.length>0){ /* Тут что-то делаем с файлами... */ } }, 2000);
Так как я изучаю только FireFox XUL и Javacript, то у меня возникли сомнения - разве можно так делать - в цикле долбиться к папке. Может быть какой-нибудь интерфейс FireFox предоставляет возможность подключиться к папке и слушать изменения? Или слушать изменения одного конкретного файла, если есть хотя бы такая возможность.
Заранее спасибо
PS дело происходит в js iMacros, если это имеет значение. Но, думаю, вопрос в целом о FireFox и Javacript.
пишу скрипты на iMacros, сопрягаю iMacros с 1С
Отсутствует
только постоянно опрашивать. без вариантов.
А жаль.
вместо интервала лучше используй таймаут, чтоб функция сама себя через него вызывала, тогда туда проще надежней поставить остановку цикла, а интервал если не убить(что может по каким либо причинам не случиться) так и будет крутиться до перезапуска браузера и при перезапуске скрипта будет запущено уже два интервала итд
Спасибо за мысль про setTimeout, этот метод, ИМХО, действительно больше подходит для моей цели.
"до перезапуска браузера" - это было бы идеально, но у меня почему-то все не как у людей.. setTimeout в глобальном пространстве имен отсутствует, он в моем контексте исполнения (iMacros) существует только для двух объектов:
1.window.setTimeout()
и
2.WorkerGlobalScope.setTimeout()
С первым вариантом легкая трудность - window закрыли и setTimeout не работает (это и логично и проверил только что).
А что за зверь WorkerGlobalScope я пока так и не понял (источник - https://developer.mozilla.org/en-US/doc … ndowTimers).
Отредактировано yinfo (04-04-2015 11:23:40)
пишу скрипты на iMacros, сопрягаю iMacros с 1С
Отсутствует
Страницы: 1