Javascript 图像的addEventListener在chrome中不起作用
这在chrome中不起作用,但在firefox中却起到了魅力作用为什么?我尝试了很多组合,但没有一个事件是用chrome启动的 我已经彻底地调试过了,而且我确实完成了所有的代码 Im运行Chrome 31.0.1650.63 m版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
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;
};