Estoy trabajando en la creación de una aplicación web básica utilizando un lienzo que cambia dinámicamente el tamaño del lienzo cuando la ventana cambia de tamaño. He conseguido que funcione de forma estática sin ningún tipo de defectos, pero cuando se crea un objeto para que sea dinámica que genera un errorgetContext no es una función
en cromo el error es:
Uncaught TypeError: Object [object Object] has no method 'getContext'
y en Firefox es:
this.element.getContext is not a function
He buscado en la web y parece ser un problema común, pero ninguno de los arreglos mencionados hace una diferencia.
El código está en cuestión es la siguiente:
layer['background'] = new canvasLayer("body","background");
function canvasLayer(location,id){
$(location).append("<canvas id='"+id+"'>unsupported browser</canvas>");
this.element=$(id);
this.context = this.element.getContext("2d"); //this is the line that throws the error
this.width=$(window).width(); //change the canvas size
this.height=$(window).height();
$(id).width($(window).width()); //change the canvas tag size to maintain proper scale
$(id).height($(window).height());
}
Gracias de antemano.
Cuando trato de poner ese código, aparece un error "TypeError no capturado: No se puede establecer la propiedad 'background' undefined" viniendo de la línea llamo a la función: \t \t \t layer ['background'] = new canvasLayer ("cuerpo", "fondo"); – devnill
que sugiere que no hizo 'var layer = {};' primero. Edité mi jsfiddle para que coincidiera más estrechamente con tu código. – Alnitak
gracias por resolver mi problema! y siempre he pensado que usar un selector jQuery es lo mismo que usar 'document.getElementById();'. Pensé mal... –