Javascript 预加载两次,但我只想保留一次?

Javascript 预加载两次,但我只想保留一次?,javascript,preloadjs,Javascript,Preloadjs,我做了一些研究,显然从队列中预加载元素所调用的函数从缓存中触发了两次。我已经检查过了,每个元素只添加到队列一次 但是,这会导致创建两个视频元素,因为我将它们添加到处理队列中文件的函数中的文档中。基本上,我正在创建一组高度为0px的视频,我计划稍后逐一播放。然而,我最终得到了每个视频的副本 var onPreloadFile = function(event) { var item = event.item; // A reference to the item that was pass

我做了一些研究,显然从队列中预加载元素所调用的函数从缓存中触发了两次。我已经检查过了,每个元素只添加到队列一次

但是,这会导致创建两个视频元素,因为我将它们添加到处理队列中文件的函数中的文档中。基本上,我正在创建一组高度为0px的视频,我计划稍后逐一播放。然而,我最终得到了每个视频的副本

var onPreloadFile = function(event) {
    var item = event.item; // A reference to the item that was passed in to the LoadQueue
    var type = item.type;
    if (type == 'video') {
        var video = document.createElement('video');
        video.src = item.src;
        video.setAttribute('class', item.css_class + ' vidStim');
        video.setAttribute('style', 'height: 0px');
        document.body.children.videoContainer.appendChild(video);
   }
 }
我怎样才能着手解决这个问题,使我没有重复的?注意-有可能我希望相同的视频稍后再次显示,因此我不能只附加我以前没有附加的子项

更新:这解决了我的问题,但我不知道这是否是一个坏习惯

var alreadyInstalled = []; //array for vids I put in the document
var onPreloadFile = function(event) {
    var item = event.item; // A reference to the item that was passed in to the LoadQueue
    var type = item.type;
    if (type == 'video') {
        var video = document.createElement('video');
        video.src = item.src;
        video.setAttribute('class', item.css_class + ' vidStim');
        video.setAttribute('style', 'height: 0px');
        if (alreadyInstalled.length > 0){
            //checking previous vid to see if it was the same one. this works because i'm assuming the two duplicate firing happen one after the other. is this always the case?
            if (alreadyInstalled[alreadyInstalled.length-1] != video.src) {
                alreadyInstalled.push(video.src);
                document.body.children.videoContainer.appendChild(video);
            }
        else {
                alreadyInstalled.push(video.src);
                document.body.children.videoContainer.appendChild(video);
        }
        document.body.children.videoContainer.appendChild(video);
   }
 }

event.item是否有任何可以使用的唯一ID?它们没有。但事实上,这两个相同的视频不会连续播放两次。所以现在,我只是检查一下添加到document.body中的前一个视频是否是同一个视频,如果不是,则只添加它。我将更新上面的代码。不确定这是否是一种不好的做法-副本是否总是一个接一个地发射?您添加的解决方案与我将要建议的类似!如果每个项都有一个ID,您可以将其添加到数组中,然后检查它是否已经存在。为此,您需要一个in_数组函数:–如果每个项目都有一个“src”,那么您可以将其用作一个虚拟ID?谢谢您的帮助!我也有这个问题,直到我意识到第二个加载请求实际上来自缓存,有点像一个blob。你检查过你的案子是否属实吗?如果您在Chrome中调试,并且一直启用“禁用缓存”,则视频将下载两次。