IE9通过masking canvas元素转发鼠标事件

And*_*rew 5 javascript jquery canvas javascript-events internet-explorer-9

我绝对定位的画布元素阻止了所有鼠标事件,因此可以点击它们下面没有任何内容,这里这里提到同样的问题.

我有多个画布层需要在特定的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);
                 });
            });   
Run Code Online (Sandbox Code Playgroud)

工作示例, jsFiddle

问题;

1.我正在创建新事件并传递相关数据,是否可以安全地传递evtvar并修改目标和currentTarget?

2.我怎样才能传播右键?

或者有没有人有更好的方法来实现这一目标?其他相关问题相当陈旧.

Sim*_*ris 3

没有干净的方法来跨浏览器传递事件。您可以传递(修改后的)事件,但不能保证它会自然地工作,尤其是跨浏览器。

要使用您的代码右键单击,只需执行以下操作:http ://jsfiddle.net/6WMXh/20/

(你一半使用了 jquery extra info 部分,但从未用它做任何事情)