我想预加载一个包含图像的目录。
到目前为止,我正在使用此代码:
预加载.php
<?php
function listImages($dir){
$ffs = scandir($dir);
foreach($ffs as $ff){
if($ff != '.' && $ff != '..' && strstr($ff, '.png') || strstr($ff, '.jpg') || strstr($ff, '.gif') || strstr($ff, '.jpeg')){
echo '"images/'.$ff;
if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
echo '", ';
}
}
}
echo '[ ';
listImages('images');
echo ']';
// output: ["image1.png", "image2.png"] etc.
?>
页脚.php
<script type="text/javascript">
// put contents of all_images.php file into variable 'images'
$.ajax({
type: "GET",
async: false,
cache: false,
url: "./preload.php",
data: "getid=true",
success: function(data){
images=data;
}
});
// The variable 'images' now contains string of file names
// needed to be preloaded.
$.fn.preload = function() {
this.each(function(){
$('<img/>')[0].src = this;
});
}
</script>
<script type="text/javascript">
$(document).ready(function(){
$(images).preload();
</script>
但它似乎不起作用。在萤火虫我得到uncaught exception: Syntax error, unrecognized expression:
如果我粘贴所有链接而不是“图像” $(images).preload();
,我不会收到错误消息,但我的图像也没有加载。
感谢任何帮助,因为我整天都坐在这里试图弄清楚。
更新#1
所以,现在我这样做:
$(document).ready(function(){
$.getJSON("./preload.php?getid=true", function(data) {
var images = [];
$.each(data, function(i, val) {
images[i] = new Image().src=val;`
$.fn.preload = function() {
this.each(function(){
$('<img/>')[0].src = this;
});
}
$(images).preload();
});
});
});
到目前为止没有错误,但图像仍然没有显示在萤火虫的“网络”选项卡中。