短い言葉で言いますが、状況は次のとおりです。
for (var _im = 0; _im < slideshow._preloadbulks[slideshow._preloadCurrentbulk].length; _im++) {
var tmpSlideIndex = (slideshow._preloadCurrentbulk*slideshow._preloadMaxbulkSize)+_im;
slideshow._preloadSlides[tmpSlideIndex] = document.createElement('video');
slideshow._preloadSlides[tmpSlideIndex].autoplay = false;
slideshow._preloadSlides[tmpSlideIndex].loop = false;
slideshow._preloadSlides[tmpSlideIndex].addEventListener('canplaythrough', slideshow.slideLoaded, false);
slideshow._preloadSlides[tmpSlideIndex].src = slideshow._slides[tmpSlideIndex][slideshow.image_size+"_video_url"];
slideshow._preloadSlides[tmpSlideIndex].addEventListener('error', function(){
console.log(tmpSlideIndex);
slideshow._preloadSlides.splice(tmpSlideIndex,1);
slideshow._slides.splice(tmpSlideIndex,1);
slideshow.slideLoaded();
}, true);
}
ご覧のとおり、ビデオ配列があり、各要素 src を DOM にロードしてプリロードしています。それは問題なく動作しますが、1 つのリソースが n/a である状況に対処する必要があり、それを既存のアレイから削除する必要があります。addEventListener('error',は問題なく動作し、利用できないリソースを検出しますが、コンソールにtmpSlideIndexを記録しているときに、元のスライド インデックスではなく別の値を取得します (ループが続くため)。
ご覧のとおり、エラー ハンドラに useCapture フラグを設定してみました。
トリックはありますか?ありがとう!