そこで、マウスホバーで多くのアニメーションGIFを使用するWebサイトを構築しています。たくさんの画像がありますが、特定のページで使用される画像のみをロードしたいと思います。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を渡すためのより良い方法はありますか?または一般的に良い方法ですか?