显示“Splash”图像直到上传新图像,然后显示新图像 x 秒

问题描述 投票:0回答:2

我想创建一个显示启动图像 (splash.jpg) 的 html/javascript 页面,直到有一个图像文件 (latest.jpg) 被覆盖。

我想显示这个 latest.jpg 90 秒,然后切换回 splash.jpg 直到新的 latest.jpg 文件被覆盖。

我希望我能展示我到目前为止所拥有的,但我已经尝试了很多不同的方法来实现这一点,但不确定我知道哪种方法最实用或最有效。

我试过在这里和其他地方找到的几件作品。

javascript html
2个回答
0
投票

我不确定你想要完成什么,但是你所说的一个常见的简单解决方案是在浏览器上使用 ajax 不断地 ping 服务器以获取文件的新版本。如果你想变得更复杂,你可以使用 WebSockets,但这对于你想要做的事情来说可能有点过头了。

我建议你在服务器上有一个带有图像哈希的 .txt 文件,浏览器 ajax 可以检查它以节省带宽。

示例代码:

HTML

<!DOCTYPE html>
<html>
<head>
    <title>Image Checker</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="script.js"></script>
    <style>
        #image {
            max-width: 100%;
            display: block;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <img id="image" src="splash.jpg">
</body>
</html>

Javascript(使用 jQuery)

var currentHash = "";
var pingInterval = 3000;
var displayInterval = 90000;
var displayTimer = 0;

$(document).ready(function() {
    var intervalId = setInterval(function() {
        // Check for updated hash.txt periodically with ajax
        $.ajax({
            url: "hash.txt",
            type: "HEAD",
            error: function() {
                //Issue checking for new image
                $("#image").attr("src", "splash.jpg");
            },
            success: function(data) {
                //Check if hash is new
                if (data != currentHash) {
                    currentHash = data;
                    // Latest image found
                    $("#image").attr("src", "latest.jpg");
                    if (displayTimer != -1)
                        clearInterval(displayTimer);
                    displayTimer = setInterval(function() {
                        // Switch back to splash image after 90 seconds
                        $("#image").attr("src", "splash.jpg");
                    }, displayInterval);
                }
            }
        });
    }, pingInterval );
});

您的服务器环境应该在更新时更新 hash.txt 文件以包含 latest.jpg 图像的哈希值。


0
投票

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<head>
    <title>My Web</title>
</head>

<body>
    <img id="splash" src="splash.jpg" alt="splash.jpg" />
</body>
<script>

    window.onload = function () {
        // Obtener la imagen de bienvenida
        var splash = document.getElementById("splash");


        setInterval(function () {
        // Add SRC-1 HERE
            splash.src = "latest.jpg";
            splash.alt = "latest.jpg";
            setTimeout(function () {
                splash.alt = "splash.jpg";
        // Add SRC-2 HERE
                splash.src = "splash.jpg";
            }, 1000);
        }, 2000);
    };
</script>

</html>

© www.soinside.com 2019 - 2024. All rights reserved.