HTCLCanvas ‘getContext’ non è una proprietà o un metodo supportato

Ho appena lanciato un’applicazione di gioco HTML5 e continuo a ricevere “l’ object non supporta log di errori di proprietà o metodo” getContext “da parte di alcuni dei miei utenti.

La mia configurazione consente solo agli utenti con Chrome (16 <), Firefox (9 <) o IE (9 <) di giocare. IE (<9) gli utenti hanno un'installazione di Chromeframe in faccia.

Solo alcuni dei miei utenti di IE9 lanciano questa eccezione. Ho giocato a diverse macchine Windows con IE9, sia Vista che Windows 7.

Cercando la mia fonte, per la funzione chiamata getContext, ottengo lo stesso schema. Creo un elemento canvas usando document.createElement e quindi chiamo getContext (‘2d’), la riga successiva.

var buffer = /** @type {!HTMLCanvasElement} */ (document.createElement('canvas')), ctx = /** @type {!CanvasRenderingContext2D} */ (buffer.getContext('2d')), draw = function(ctx) { /** * Alot of drawing calls. */ }; draw(ctx); 

Dato che molti dei miei utenti di IE9 eseguono il gioco come dovrebbe, non penso che questo sia un problema con il mio codice, ma piuttosto una barra degli strumenti / plugin o un’impostazione in IE9 che mi stia inciampando qui.

Che cosa ne pensate ?

Dopo aver inserito abbiamo ridotto il numero di bug molto, ne abbiamo ancora alcuni, ma potrebbero essere gli utenti che accedono con browser strani che il controllo dell’installazione di chromeframe non cattura.

chrome = 1 significa ‘usa chrome frame’ se è lì.

IE = bordo significa ‘usa la versione più alta ansible di IE’.

Quindi andrò con quello per ora.

per quanto ne so, IE9 supporta pienamente il tag canvas. Ma l’utente deve assicurarsi che non sia in modalità di compatibilità. Ma solo per evitare il problema ti suggerisco di usare excanvas. Se non sai come scaricare excanvas e aggiungi il seguente link

  

Hai preso in considerazione la possibilità che gli utenti non sappiano quale versione di IE stanno utilizzando e la stanno segnalando in modo errato?

Dalle istruzioni

Elementi creati dynamicmente Se hai creato l’elemento canvas in modo dinamico, non avrà il metodo getContext aggiunto all’elemento. Per farlo funzionare è necessario chiamare initElement sull’object G_vmlCanvasManager.

 var el = document.createElement('canvas'); G_vmlCanvasManager.initElement(el); var ctx = el.getContext('2d');