我绝对定位的画布元素阻止了所有鼠标事件,因此可以点击它们下面的任何内容,同样的问题提到here和here。
我有多个画布层需要在特定的z-index处,所以我需要通过画布转发鼠标事件。 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
问题;
1。我正在创建新事件并传递相关数据,是否可以安全地传递evt
var并修改目标和currentTarget?
2。我怎样才能传播右键?
或者有没有人有更好的方法来实现这一目标?其他相关问题已经很久了。
答案 0 :(得分:3)
没有 clean 方式来跨浏览器传递事件。你可以传递(修改过的)事件,但不能保证它会自然地工作,尤其是跨浏览器。
要使用您的代码右键单击,请执行以下操作:http://jsfiddle.net/6WMXh/20/
(你一半使用了jquery额外信息部分,但从未对它做任何事情)