Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 图像的addEventListener在chrome中不起作用_Javascript_Google Chrome - Fatal编程技术网

Javascript 图像的addEventListener在chrome中不起作用

Javascript 图像的addEventListener在chrome中不起作用,javascript,google-chrome,Javascript,Google Chrome,这在chrome中不起作用,但在firefox中却起到了魅力作用为什么?我尝试了很多组合,但没有一个事件是用chrome启动的 我已经彻底地调试过了,而且我确实完成了所有的代码 Im运行Chrome 31.0.1650.63 m版 for(var x = 0; x < 2; x++) { while(bFinishCheck == false) { img = new Image(); img.addEventListener("load

这在chrome中不起作用,但在firefox中却起到了魅力作用为什么?我尝试了很多组合,但没有一个事件是用chrome启动的

我已经彻底地调试过了,而且我确实完成了所有的代码

Im运行Chrome 31.0.1650.63 m版

for(var x = 0; x < 2; x++)
{
    while(bFinishCheck == false)
    {
        img = new Image();


        img.addEventListener("load", function() {
            // coming soon
            alert('inside load');
        }, false);
        img.addEventListener("error", function() {
            // coming soon
            alert('inside rror');
        }, false);
        if (bCheckEnabled) {

            img.src = 'Images/Cart/' + typeOfTiles[typeCounter] + '/' + tileCounter + '.png';

            console.log(img.src);
            tileCounter++;
        }   
    }
}   
return imgArray;
for(变量x=0;x<2;x++)
{
while(bFinishCheck==false)
{
img=新图像();
img.addEventListener(“加载”,函数(){
//马上就来
警报(“内部负载”);
},假);
addEventListener(“错误”,函数(){
//马上就来
警报(“内部错误”);
},假);
如果(b选中){
img.src='Images/Cart/'+typeOfTiles[typeCounter]+'/'+tileCounter+'.png';
console.log(img.src);
tileCounter++;
}   
}
}   
返回英加里;
在许多浏览器上(我不记得是哪种浏览器),如果图像已经被缓存,那么甚至不会触发加载

尝试添加以下行:

img.src = 'Images/Cart/' + typeOfTiles[typeCounter] + '/' + tileCounter + '.png';
if (img.complete) { alert("Image complete - Image loaded from cache"); }

它也不能与匿名函数一起工作,但是谢谢你的评论,我最终还是这样做了。将complete属性与作用域的setInterval和Bind一起使用。这是为了在连接缓存触发事件之前使其失效。完成处理得很好

DTE.prototype.LoadTileImages = function(typeOfTiles)
{    
    var img;
    var imgArray = new Array();
    var typeCounter = 0;

    for(var x = 0; x <= 13; x++)
    {       
        console.log("Fetching tile "+(x + 1 )+" of " + 14);
        img = new Image();
        img.src = 'Images/Cart/' + typeOfTiles[typeCounter]
                                 + '/' + (x + 1) + '.png';
        imgArray.push(img);
    }//end for loop!                        

   this.tiles = imgArray;
   setTimeout(this.InterValFunction.bind(this), 5); //Important does get called from   Global!

};
DTE.prototype.LoadTileImages=函数(文件类型)
{    
var-img;
var imgArray=新数组();
var-typeCounter=0;

对于(var x=0;x,在我的手机上,所以我无法测试它。但由于我从未在JavaScript中看到new Image(),我非常惊讶这是一种为每个元素设置事件处理程序的方法。如果
img.onload=function(){…},您可以尝试一下吗
适用于您,只是为了确保浏览器中的
addEventListener
实现没有问题?我使用的是
31.0.1650.57
,我对
addEventListener
没有任何问题。您可能在缓存方面有问题。有关更多帮助,请参阅。
DTE.prototype.InterValFunction = function () {

    that = this;
    this.loadedTiles = 1;


    for (var i = 0; i < this.tiles.length; i++) {

        if (!this.tiles[i].complete) {                      
            var percentage = i * 100.0 / (this.tiles.length);
            percentage = percentage.toFixed(0).toString() + ' %';
            console.log("loading... " + percentage);
            setTimeout(this.InterValFunction.bind(this), 20);
        }
        else
        {                   
            if(this.loadedTiles == this.tiles.length) {
                console.log("loading... " + 100 +"%");
                this.DrawControlPanelTiles(this.tiles, this);
            }

            this.loadedTiles++;                             
        }
    }//End for

    this.loadedTiles = 1;
};