【发布时间】:2011-11-18 18:58:00
【问题描述】:
我的绝对定位的画布元素阻止了所有鼠标事件,因此它们下方的任何内容都不能被点击,同样的问题提到了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。如何推广右键单击?
或者有没有人有更好的方法来做到这一点?其他相关问题都比较老了。
【问题讨论】:
标签: javascript jquery canvas internet-explorer-9 jquery-events