Вот проблема, с которой я имею дело:
Очень мало оконных программ, которые отображают анимированные изображения.gif с правильной частотой кадров. Вероятно, потому что все они используют библиотеки Windows (возможно.net) для этого, и каждый, кто попытался просмотреть анимированный gif в IE, и обнаружил, что он играет WAY TOO SLOW, знает, что Microsoft не справилась с этим эффектно.
Веб-браузер Chrome - одна из немногих программ для окон, которые всегда воспроизводят анимированный gif с правильной частотой кадров, поэтому мое решение заключается в создании автономного html-документа для открытия в Chrome, который можно отбросить в каталог и открыть в Chrome для отображения всех изображений в этом каталоге и/или его подкаталогах в стиле просмотра изображений.
Пока что мой документ (gif_view.html) открывает изображение на основе жестко закодированного имени пути/файла, увеличивает/уменьшает это изображение с помощью кнопок вверх/вниз и переключается на другие жестко кодированные изображения с левой и правой ключи.
Я хочу, чтобы эти имена файлов изображений не были жестко закодированы. gif_view.html должен использовать скрипт, чтобы узнать, какие изображения и подкаталоги находятся в каталоге, в который я его разместил, и циклически переключаться между ними с помощью клавиш со стрелками. Он также должен в конечном итоге создать список подкаталогов и позволить зрителю просматривать их.
К сожалению, я не могу заставить это делать одно из этих действий самостоятельно, поскольку (по соображениям безопасности) у JavaScript нет способа поиска содержимого каталога.
Кто-нибудь знает, как это сделать? Возможно, другой язык сценариев для обработки левых/правых клавиш? Или есть способ программно прочитать каталог с JS, который я пропустил? Или Microsoft FINALLY выпустила патч или что-то, чтобы исправить проблему с частотой кадров?
Пожалуйста, имейте в виду: это должен быть ОДНОСТОРОННИЙ ДОКУМЕНТ без каких-либо внешних зависимостей. Пользователь должен просто иметь возможность зайти в папку, открыть ее в браузере и посмотреть, как происходит волшебство. Если ваше решение включает в себя что-либо вне самого документа (например, скажем, установить Apache и некоторый скрипт на стороне сервера для чтения файла), то это не решение. Я уже так пробовал такие вещи. Такие внешние решения работают, но каждый из них очень неуклюж по своим причинам.
Если у кого-то есть идеи, я был бы благодарен.
Используя функцию загрузки каталогов Chrome, это легкий ветерок. Во-первых, поместите поле выбора файла в свой HTML-код файла:
<input type="file" id="file_input" webkitdirectory="" directory="">
и затем, когда пользователь выбирает папку, используя его, вы можете читать такие вещи, как это:
document.getElementById('file_input').addEventListener('change',function(e){
var gifs=e.target.files;
[].forEach.call(gifs,function(curGif){
var elt=document.createElement('img');
elt.setAttribute('src',(webkitURL||URL).createObjectURL(curGif));
document.body.appendChild(elt);
});
},false);
у этого нет всех причудливых вещей со стрелками, но он работает: http://jsfiddle.net/markasoftware/m65u7/1/