Mis elementos canvas completamente posicionados están bloqueando todos los eventos del mouse para que no se pueda hacer clic en nada debajo, el mismo problema mencionado here y here.IE9 Eventos de mouse hacia adelante a través de un elemento canvas enmascarado
Tengo varias capas de lienzo que deben estar en un índice Z específico, así que necesito reenviar los eventos del mouse a través de los lienzos. pointer-events: none;
obras en buenas navegadores, pero para IE9 que necesitan javascript para hacerlo, aquí está mi solución actual,
var evts = [ 'click', 'mousedown', 'mouseup', 'dblclick'],
canvases = $('canvas');
$.each(evts, function(_, event){
canvases.bind(event, function(evt){
var target,
pEvent;
$(this).hide();
target = document.elementFromPoint(evt.clientX, evt.clientY);
$(this).show();
pEvent = $.Event(event);
pEvent.target = target;
pEvent.data = evt.data;
pEvent.currentTarget = target;
pEvent.pageX = evt.pageX;
pEvent.pageY = evt.pageY;
pEvent.result = evt.result;
pEvent.timeStamp = evt.timeStamp;
pEvent.which = evt.which;
$(target).trigger(event, pEvent);
});
});
ejemplo de trabajo, jsFiddle
preguntas;
1. Estoy creando el nuevo evento y pasando los datos relevantes, ¿sería seguro pasar la var evt
con el objetivo y el actualTarget modificado?
2. ¿Cómo puedo propocionar un clic derecho?
¿Alguien tiene una mejor manera de lograr esto? Las otras preguntas relacionadas son bastante antiguas.
estoy estoy tratando de enviar eventos a través de la tela, no en el lienzo. En IE9, cualquier elemento debajo del lienzo no recibe eventos de clic pasados. Puedes ver lo que quiero decir [aquí] (http://jsfiddle.net/VvPPW/1/) en IE9. – Andrew
Oh derp, ¡no me di cuenta de que los elementos a continuación no eran lienzos! He editado mi respuesta, pero la triste realidad es que todavía no hay una forma dorada de hacerlo. –
Además, agregué una solución para su bit de clic derecho –