Мои абсолютно расположенные холстовые элементы блокируют все события мыши так, что ничто под ними не может быть щелкнуто, та же самая проблема, упомянутая здесь и здесь.
У меня есть несколько холстовых слоев, которые должны быть у определенных z-индексов, поэтому мне нужно пересылать события мыши через холсты. pointer-events: none;
работает в хороших браузерах, но для IE9 мне нужен javascript, вот мое текущее решение,
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);
});
});
Рабочий пример, jsFiddle
Questions;
1. Я создаю новое событие и передаю соответствующие данные, будет ли безопасно передать вариатор evt
с измененной целью и currentTarget?
2. Как я могу прогибать правый клик?
Или у кого-нибудь есть лучший способ это сделать? Другие связанные с этим вопросы довольно старые.