javascript - IE9 通过屏蔽 Canvas 元素转发鼠标事件

标签 javascript jquery canvas internet-explorer-9 jquery-events

我的绝对定位 Canvas 元素阻止了所有鼠标事件,因此无法单击它们下面的任何内容,提到了同样的问题 herehere .

我有多个需要位于特定 z-index 的 Canvas 层,因此我需要通过 Canvas 转发鼠标事件。 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。我正在创建新事件并传递相关数据,传递修改了目标和 currentTarget 的 evt var 是否安全?

<强>2。如何传播右键点击?

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

最佳答案

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

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

(您使用了一半的 jquery extra info 部分,但从未对其进行任何操作)

关于javascript - IE9 通过屏蔽 Canvas 元素转发鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446720/

相关文章:

jquery - 如何在客户端访问模型错误?

javascript - jQuery 需要返回整个对象而不仅仅是包含数据

html - SVG 和 HTML5 Canvas 有什么区别?

javascript - Unity——JavaScript 汽车走错方向

javascript - selectBooleanCheckbox 中 JavaScript 函数的参数损坏

javascript - 下划线绑定(bind) vs jQuery.proxy vs native 绑定(bind)

javascript - 在 Canvas 中旋转箭头

javascript - JS 验证函数跳过字段并从中间开始

jquery - 对 Kendocombobox 的项目进行排序

javascript - 如何计算避开物体的贝塞尔曲线控制点?