В настоящее время я пытаюсь сделать дешевое, простое навигационное окно для слайд-шоу для клиента (что-то вроде того, что, скажем, Red Sox или Gamespot используют на своих сайтах, но намного, намного проще). Пока что все идет хорошо, с одной проблемой - изображения не появляются при первом посещении. Они появляются только после перезагрузки страницы. Я думаю, что это может быть какая-то проблема во время выполнения или, возможно, проблема с кешем, но я не уверен, как это исправить. Мой код:
PHP:
if (isset($_GET['start']) && "true" === $_GET['start'])
{
$images = array();
if ($dir = dir('images'))
{
//$count = 0;
while(false !== ($file = $dir->read()))
{
if (!is_dir($file) && $file !== '.' && $file !== '..' && (substr($file, -3) === 'jpg' || substr($file, -3) === 'png' || substr($file, -3) === 'gif'))
{
$lastModified = filemtime("{$dir->path}/$file");
$images[$lastModified] = $file;
//$images["image$count"] = $file;
//++$count;
}
}
echo json_encode($images);
}
else { echo "Could not open directory"; }
}
HTML и JavaScript:
<!doctype html>
<html lang="en-us">
<head>
<title>jQuery Cycle test</title>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery.cycle.all.min.js"></script>
<style>
#slideshow a { margin: 0; padding: 0; color: #fff; }
</style>
</head>
<body>
<div id="slideshow">
</div>
</body>
<script type="text/javascript">
$.get('slideshow.php', {start : "true"}, function(data){
var images = JSON.parse(data);
for(var image in images){
$('#slideshow').append('<a href="images/' + images[image] + '"><img src="images/' + images[image] + '" alt="" /></a>');
}
$('#slideshow').cycle({
fx: 'cover',
direction: 'right',
timeout: 3000,
speed: 300
});
});
</script>
</html>
Я думаю, что мне может понадобиться отложить синхронизацию функции цикла или, возможно, каким-то образом заставить ее «увидеть» изображения с первого раза. Я просто не уверен, как это сделать.