問題:
AnythingSlider のスライドに埋め込まれた iframe (8tracks.com プレイリスト) を格納するサイトを作成しようとしています。ページが完全に読み込まれると、すべてがスムーズに機能し、埋め込まれた iframe で正常に動作します。コンテンツが多すぎて (8 つの異なるジャンルのスライド パネル)、場合によっては 8 つのスライド パネルすべてを 1 つの大きなヒットとして読み込むのに 30 秒以上かかることがあります。スライドページが要求されたときに埋め込まれたiframeコンテンツを遅延ロードしたいのですが、この目的のために画像の遅延ロードコーディングを適応させるのに問題があります。
これまでの試み:
AnythingSlider 文書化された画像の遅延ロード コーディングからの img タグ参照を iframe の参照と簡単に交換できると考えました。どちらも src への単なる参照であるため、機能しますが、これはこれまでのところそうではないことが証明されています場合があります。以下のコードは、ギャラリー内の画像の遅延読み込みを有効にしますが、iframe への切り替えは今のところ機能していません。
// This part of the code is
// for demo purposes only
// *************************
var message = function(file, p, l) {
var txt = l ? '<i>loading #' + p + '</i>' : '<b>preventing load #' + p + '</b>';
// show loading message
$('.message').append('<li>' + txt + ': ' + file + '</li>').find('li:first').remove();
};
// The code above is for this demo only
// *************************
// load image
var loadImg = function(slider, page) {
slider.$items.eq(page).find('iframe').each(function() {
if ($(this).attr('src') === '') {
var newsrc = $(this).attr('data-src');
$(this).attr('src', newsrc);
// update loading message
message(newsrc, page, true); // *** for demo only ***
}
});
};
$('#slider').anythingSlider({
resizeContents: false,
// *********** Callbacks ***********
// Callback when the plugin finished initializing
onInitialized: function(e, slider) {
var start = slider.options.startPanel;
// allow start & cloned panel images to load
// the rest get the src removed.
slider.$items.eq(start).siblings(':not(.cloned)').find('iframe').each(function() {
var $el = $(this);
$el.attr('src', function(i, src) {
if (src !== '') {
$el.attr('data-src', src);
// update loading message
message(src, i + 1, false); // *** for demo only ***
}
return '';
});
});
// load current image
loadImg(slider, slider.currentPage);
// load first cloned slide #0
loadImg(slider, 0);
// load last cloned slide #6
loadImg(slider, slider.pages+1);
},
// Callback when slide initiates, before control animation
onSlideInit: function(e, slider) {
// preload the targeted page image
loadImg(slider, slider.targetPage);
}
});
これは、サイト全体でまだ解決していない最後の小さな問題であるため、私を正しい方向に向けるのを助けることができれば、非常に感謝しています.
これは、必要なすべてのコンポーネントを zip パケット (200kb) として含むページのフレームワークで、役立つ場合はドロップボックスからリンクされています.. http://dl.dropbox.com/u/23417244/AnythingSlider.zip
助けてくれてどうもありがとう!! -ブラッド