gpt4 book ai didi

javascript - 带有动态上传照片的 HTML 照片幻灯片

转载 作者:行者123 更新时间:2023-11-27 23:22:28 25 4
gpt4 key购买 nike

我正在寻找用于网页(HTML、php 和 JS/jQuery)的照片幻灯片。它应该支持全屏和动画以及大量图像。幻灯片应显示特定文件夹中的所有图像。到目前为止,我正在使用 Superslides ( http://archive.nicinabox.com/superslides ),效果很好。

但这是我的问题。幻灯片将在事件期间放映,我已经开发了一个用于照片上传的 PHP 脚本,可将图像放在指定的文件夹中。幻灯片(可能是 Superslides 的修改版本或从头开始的新项目)应首先显示所有新图像,然后,在第一次显示所有新图像后,它应检查是否已上传新图像。如果是这样,它应该显示它们。否则它应该从旧图像开始一个循环。在检查是否添加了新图像之前,它不应该显示所有旧图像!它可以按预定方式检查更新的图像,或者它可以接收“推送通知”(我不知道这是否可以用 JS,也许用 AJAX?)。

是否有任何开箱即用的东西或可遵循的教程?请记住,我不是互联网技术专家(我从事桌面开发工作),我非常擅长 PHP,但不擅长 JS...

更新:这就是我目前正在做的事情......这样是行不通的! Superslides 未正确初始化(我想它没有计算正确的图像数量)。此外,不存在最新照片优先的“优先”队列。最后,图像列表不会以编程方式更新。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST PHOTO PLAYER</title>
<link rel="stylesheet" href="css/superslides.css">
</head>
<body>
<div id="slides">
<div class="slides-container" id="slides-foto-test">
</div>

<nav class="slides-navigation">
<a href="#" class="next">Next</a>
<a href="#" class="prev">Previous</a>
</nav>
</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$( document ).ready(function() {
$.ajax({
url: "photo-list.php",
dataType: "json",
success: function (data) {
$.each(data, function(i,filename) {
$("#slides-foto-test").append("<img src='" + filename + "'>");
});
}
});
});
</script>
<script src="js/jquery.easing.1.3.js"></script>
<script src="js/jquery.animate-enhanced.min.js"></script>
<script src="js/jquery.superslides.min.js" type="text/javascript" charset="utf-8"></script>
<script>
$(function() {
$('#slides').superslides({
hashchange: true,
play: 4000
});

$('#slides').on('mouseenter', function() {
$(this).superslides('stop');
console.log('Stopped')
});
$('#slides').on('mouseleave', function() {
$(this).superslides('start');
console.log('Started')
});
});
</script>
</body>
</html>

这是photo-list.php 文件:

<?php
$filenameArray = array();
$handle = opendir(dirname(realpath(__FILE__)).'/images/a-folder/');
while($file = readdir($handle)){
if($file !== '.' && $file !== '..'){
array_push($filenameArray, "images/a-folder/$file");
}
}
echo json_encode($filenameArray);
?>

最佳答案

这很可能是“竞争条件”。

顶部的代码 ($( document ).ready()) 说“加载 DOM 时,进行服务器查询。当服务器查询响应时,填充 HTML 图像。”

底部的代码显示“加载 DOM 后,使用给定的图像开始幻灯片放映”。

虽然幻灯片放映代码应在 AJAX 请求触发后立即触发,但它会在 AJAX 响应之前运行(某些极端情况除外)。

因此,您在未填充的图像阵列上开始幻灯片放映。


两种解决方案:

1 AJAX 响应后,填充 HTML 并在此时开始幻灯片放映

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/jquery.easing.1.3.js"></script>
<script src="js/jquery.animate-enhanced.min.js"></script>
<script src="js/jquery.superslides.min.js" type="text/javascript" charset="utf-8"></script>
<script>
$( document ).ready(function() {
$.ajax({
url: "photo-list.php",
dataType: "json",
success: function (data) {
$.each(data, function(i,filename) {
$("#slides-foto-test").append("<img src='" + filename + "'>");
});

// Now trigger the slideshow script
$('#slides').superslides({
hashchange: true,
play: 4000
});
$('#slides').on('mouseenter', function() {
$(this).superslides('stop');
console.log('Stopped')
});
$('#slides').on('mouseleave', function() {
$(this).superslides('start');
console.log('Started')
});

}
});
});
</script>

2 为什么不在 PHP 中生成 HTML,并在此时填充图像数组?节省服务器调用,为用户更快加载页面,并消除竞争条件。

关于javascript - 带有动态上传照片的 HTML 照片幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com