5
我絕對定位畫布元素阻止所有的鼠標事件,這樣沒有它們下面可以點擊IE9轉發的鼠標事件,同樣的問題提到here和here。通過光罩canvas元素
我有需要在多個帆布層具體的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與target和currentTarget進行修改?
2.如何傳播完成右鍵點擊?
或者有沒有人有更好的方式來做到這一點?其他相關問題相當老舊。
我正在試圖通過畫布發送事件,不進入畫布。在IE9中,畫布下的任何元素都不會獲取傳入其中的點擊事件。你可以在IE9中看到我的意思[這裏](http://jsfiddle.net/VvPPW/1/)。 – Andrew
Oh derp,我沒有注意到下面的元素是非畫布!我已經編輯了我的答案,但可悲的是,仍然沒有辦法做到這一點。 –
另外,我加了一個解決方案,您的鼠標右鍵單擊位 –