IE9通过屏蔽画布元素转发鼠标事件



我的绝对定位画布元素阻塞了所有的鼠标事件,因此它们下面的任何东西都不能被点击,这里和这里提到的问题相同。

我有多个画布层,需要在特定的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

问题;

1。我正在创建新事件并传递相关数据,通过修改目标和currentttarget传递evt变量是否安全?

2。如何提示右键单击?

或者有人有更好的方法来完成这个?其他相关问题都很老了

没有干净的方式跨浏览器传递事件。你可以传递(modified)事件,但你不能保证它会正常工作,尤其是跨浏览器。

使用代码右键单击:http://jsfiddle.net/6WMXh/20/

(你一半使用jquery的额外信息部分,但从来没有做过任何事情)

最新更新