gpt4 book ai didi

JavaScript 图像 slider 在每个浏览器上的作用不同

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:42 25 4
gpt4 key购买 nike

我正在使用 Canvas 和图像 slider 进行测试,所以我最终得到了这段代码和以下问题。

当我从关闭的 Firefox 加载它时,我在控制台上收到此错误。

IndexSizeError: Index or size is negative or greater than the allowed amount

当我刷新页面时,它工作正常。

在 Chrome 上无法让它运行,而在 Edge 上自第一次加载后就运行良好。

var img = [new Image(), new Image(), new Image(), new Image()];
img[0].src = 'beach.jpg';
img[1].src = 'mountain.jpg';
img[2].src = 'urban.jpg';
img[3].src = 'rural.jpg';

var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var cC = canvas.getContext('2d');
canvas.height = img[0].height;
canvas.width = img[0].width;

var ix = 0;
var nimg = Math.floor(Math.random()*4);
window.requestAnimationFrame(xx);
function xx(){
ix++;
if (ix > 0 && ix < 101){

//the following line is the one that firefox throws error in console
cC.drawImage(img[nimg], 0, 0, canvas.width*ix/100, canvas.height*ix/100, 0, 0, canvas.width*ix/100, canvas.height*ix/100);

} else if (ix === 101){
ix = -100;
nimg = Math.floor(Math.random()*4);
}
window.requestAnimationFrame(xx);
};

最佳答案

发生这种情况的原因可能是浏览器异步加载图像,因此 Canvas 尺寸将设置为 0, 0 因为图像尚未加载。尝试像这样加载 Canvas 尺寸:

var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var cC = canvas.getContext('2d');

var img = [new Image(), new Image(), new Image(), new Image()];
img[0].src = 'beach.jpg';
img[1].src = 'mountain.jpg';
img[2].src = 'urban.jpg';
img[3].src = 'rural.jpg';

img[0].onload = function() {
canvas.height = this.height;
canvas.width = this.width;
}

var ix = 0;
var nimg = Math.floor(Math.random()*4);
window.requestAnimationFrame(xx);
function xx(){
ix++;
if (ix > 0 && ix < 101){
cC.drawImage(img[nimg], 0, 0, canvas.width*ix/100, canvas.height*ix/100, 0, 0, canvas.width*ix/100, canvas.height*ix/100);
} else if (ix === 101){
ix = -100;
nimg = Math.floor(Math.random()*4);
}
window.requestAnimationFrame(xx);
};

关于JavaScript 图像 slider 在每个浏览器上的作用不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com