2012-02-16 33 views
8

Acabo de lanzar una aplicación de juego HTML5, y sigo recibiendo 'objeto no admite propiedad o método' getContext 'registros de errores de algunos de mis usuarios.HTMLCanvas 'getContext' no es una propiedad o método admitido

Mi configuración solo permite a los usuarios con Chrome (16 <), Firefox (9 <) o IE (9 <) jugar el juego. IE (< 9) los usuarios obtienen una instalación de chromeframe en su cara.

Solo algunos de mis usuarios de IE9 lanzan esta excepción. He jugado el juego en varias máquinas Windows con IE9, tanto vista como Windows 7.

Buscando en mi fuente, para la llamada de función getContext, obtengo el mismo patrón. Creo un elemento canvas utilizando document.createElement, y luego invoco getContext ('2d'), la siguiente línea.

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

Teniendo en cuenta que muchos de mis usuarios de IE9 ejecutar el juego como debe, no creo que esto es un problema con mi código, sino más bien una barra de herramientas/plugin o entorno en el que me IE9 es tropezar aquí .

¿Qué piensan?

Respuesta

3

por lo que sé IE9 es totalmente compatible con la etiqueta de lona. Pero el usuario debe asegurarse de que no esté en modo de compatibilidad. Pero para evitar el problema, te sugiero que uses excanvas. Si usted no sabe las excanvas descarga ¿y agregar siguiente enlace

<!--[if lt IE 9]><script src="../excanvas/excanvas.original.js"></script><![endif]--> 
+0

Sí, pero si los usuarios están en modo de compatibilidad IE por debajo de 9, deberían obtener una ventana emergente de Chrome Frame y no poder jugar antes de que se instale chrome frame ... De todos modos he puesto en el encabezado de mi página, por lo que debería evitar que los usuarios ejecuten el juego en el modo de IE peculiaridades. No tengo intenciones de implementar soporte para excanvas. Volveré, cuando sé si la metaetiqueta ha cambiado algo. – Firecow

0

¿Ha considerado la posibilidad de que los usuarios no saben qué versión de IE que están utilizando y están informando de forma incorrecta?

+0

Eso no es posible ... la cadena de userAgent se envía automáticamente cuando se detectan excepciones. – Firecow

10

Después de insertar <meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">, hemos reducido mucho el número de errores, todavía tenemos algunos, pero podrían ser usuarios que inician sesión con navegadores raros que la verificación de instalación de chromeframe no capta.

chrome = 1 significa 'use chrome frame' si está allí.

IE = edge significa 'utilizar la versión más alta posible de IE'.

Así que voy a ir con eso por ahora.

+0

funcionó para mí, gracias! – hevi

+0

¿Qué cambios hizo? @hevi – Illaya

+0

Según el enunciado [aquí] (http: // stackoverflow.com/questions/25557299/internet-explorer-11-disable-display-intranet-sites-in-compatibility-view-via), asegúrese de que sea la primera declaración meta. – B5A7

0

De Instructions

elementos creados dinámicamente Si ha creado el elemento canvas de forma dinámica no tendrá el método getContext añade al elemento. Para que funcione, debe llamar a initElement en el objeto G_vmlCanvasManager.

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

Recibo un error en G_vmlCanvasManager @Confa – Illaya

Cuestiones relacionadas