Sto cercando di capire perché il classico modo di precaricamento dell'immagine prima di disegnare nella tela spara un "Errore di tipo" su Chrome.context.drawImage() non funziona con la nuova istanza Image() (chrome)
Vediamo la situazione:
cerco di precaricare le immagini in 3 modi diversi:
- creare una nuova immagine() esempio
- la creazione di un elemento di immagine
- la creazione di un'immagine jQuery oggetto
Oppure se preferisci un codice:
var canvas1 = document.getElementById('canvas-1'),
context1 = canvas1.getContext('2d'),
image1 = new Image(),
canvas2 = document.getElementById('canvas-2'),
context2 = canvas2.getContext('2d'),
image2 = document.createElement('img'),
$canvas3 = $('#canvas-3'),
context3 = $canvas3.get(0).getContext('2d'),
$image3 = $('<img>'),
loadImage = function (image, context, debugIndice) {
debugIndice = debugIndice || -1;
image.onload = function() {
try {
context.drawImage(this, 0, 0, 100, 100);
}
catch (e) {
console.log('error for debugIndice', debugIndice, e, this);
}
}
image.src = "http://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png";
};
loadImage(image1, context1, 1);
loadImage(image2, context2, 2);
loadImage($image3.get(0), context3, 3);
Si prega di guardare il Fiddle qui.
Ho solo un errore di tipo per la prima chiamata loadImage.
Sto utilizzando Google Chrome 27.0.1453.94 su Windows nella mia azienda e Google Chrome 27.0.1453.93 su Mac OS X, entrambe le piattaforme x64.
Questo codice funziona bene in Firefox, e anche IE9 (non sto scherzando, lo giuro)
Qualcuno sa su questa foto() problema di classe in Chrome?
EDIT: Ecco una schermata del bug:
Potete vederlo sulle misure reali here.
Questo non è un grosso problema, comunque userò il modo jQuery, ma sono davvero curioso di vedere quale sia la causa, e perché ho perso un po 'di tempo cercando di risolverlo!
Ho dato un'occhiata a questo bug.
Mi chiedo ancora perché non sono sicuro che sia lo stesso ?!
no "errore di tipo" neanche qui (Chrome 27) – devnull69
Hummmm strano, si può ragazzi mi dire in quale piattaforma stai lavorando? –
Impossibile riprodurre il problema su Chromium 25 e Chrome 29 (dev) su Ubuntu 12.04. Sei sicuro che non si tratti di un problema di caching? – apsillers