2013-05-29 9 views
5

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:

  1. creare una nuova immagine() esempio
  2. la creazione di un elemento di immagine
  3. 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: Chrome - Image 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 ?!

+0

no "errore di tipo" neanche qui (Chrome 27) – devnull69

+0

Hummmm strano, si può ragazzi mi dire in quale piattaforma stai lavorando? –

+0

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

risposta

1

che non è esattamente una soluzione in quanto questo è un bug Chrome Ma qui è il relativo bug Chrome sul proprio inseguitore Si tratta di un problema noto e dovrebbe essere fissare in - si spera - un prossimo futuro:. https://code.google.com/p/chromium/issues/detail?id=238071

Nel frattempo, utilizzare document.createElement("img") invece di new Image().

+0

Sì, ho visto questo prima di chiedere, guarda il link "bug" nella mia domanda :) Infine sto usando $ ('') da jQuery! –

+0

Ho un problema che l'immagine non è stata caricata, ma l'evento onload ha attivato comunque, quindi nessuna immagine viene disegnata e si verifica un errore. – user2340939

+0

Strang pensa che in realtà la tua immagine potrebbe essere danneggiata in modo binario? –

1

Mi fa male che questo ha funzionato e non ho una risposta migliore, ma dopo aver acceso e spento tutte le estensioni, provando i canali beta e dev, finalmente ho riavviato il mio computer. Ora drawImage funziona bene. . :(