我有以下代码:

<?php
    $dir_handle = 'assets/splashs/';
    foreach(array_diff(scandir($dir_handle), array('.', '..')) as $file) {
        echo '<img id="preload_header" src="assets/splashs/' . $file . '" /><br />';
    }
?>


我想知道是否可以检查图像是否成功加载,如果可以,则删除图像并移至下一个图像?

我的初始文件夹中有600多个图像,我不希望仅在侧面放置600个图像,但是我希望在我在其他地方调用它们时预先加载它们。

load image => successfully loaded => remove and onto next image
           => unsuccessfully loaded => remove image and stop


感谢您的任何帮助。

最佳答案

这是您预加载图像的方式:

<script type="text/javascript">
if (document.images) {
    img1 = new Image();
    img1.src = "image.jpg";
}
</script>


因此,您无需加载和显示图像(<img src="....">),而是使用JavaScript将其加载到浏览器中,因此以后不必“移除图像”,因为它们永远都不会显示。

可以与foreach结合使用:

<script type="text/javascript">
if (document.images) {
    <?php
    $i = 0;
    foreach(array_diff(scandir($dir_handle), array('.', '..')) as $file) {
        echo 'img' . $i . ' = new Image();' . PHP_EOL;
        echo 'img' . $i . '.src = "' . $file . '";' . PHP_EOL;
        $i++;
    }
    ?>
}
</script>

09-10 11:32
查看更多