所以我正在建立一个网站,将在鼠标悬停时使用大量动画 GIF。会有很多图像,我只想加载将在任何给定页面上使用的图像。它使用 WordPress,因此我可以使用条件标签仅在特定页面上显示我需要的图像的 URL。
我的问题是如何告诉浏览器/服务器需要预加载哪些图像。我决定向包含元素添加一个 HTML5 数据属性。
例如,我会有一个包含这个 PHP 的 DIV:
<div id="home-container" class="preload" data-preload="<?php echo preloadImages(); ?>"></div>
它将在 PHP 中调用此函数:
function preloadImages() {
global $post;
$templateURL = get_template_directory_uri();
$images = array();
if( is_page('test') )
$images[] = "'".$templateURL."/images/gifs-static/button-info-tab-close-off.gif'";
$images[] = "'".$templateURL."/images/gifs-animated/button-info-tab-close.gif'";
}
return implode(", ", $images);
}
所以输出将是这样的:
<div id="home-container" class="preload" data-preload="'http://example.com/images/gifs-static/button-info-tab-close-off.gif', 'http://example.com/images/gifs-animated/button-info-tab-close.gif'"></div>
然后我运行这个 JavaScript:
jQuery('.preload').each(function(){
var images = [
// Comma separated list
jQuery(this).data('preload')
];
jQuery(images).each(function() {
jQuery('<img />').attr('src', this).addClass('preloaded').appendTo('body').hide();
});
});
问题是 JavaScript 不喜欢逗号分隔的列表。如果我只是写在 URL 中,它工作正常。那么有没有更好的方法来传递这些 URL?还是一般更好的方法?